2016-03-08 125 views
0

我需要一些幫助,以解決與C#中複雜數據類型相關的問題。我有以下類型的數據,我想將它保存在變量中,但它會提高性能,因爲我必須將它用於搜索,並且會有大量數據。數據示例如下:c中的複雜數據類型#

ParentNode1 
      ChildNode1 
      ChildNode2 
      ChildNode3 
ParentNode2 
ParentNode3 
ParentNode4 
      ChildNode1 
      ChildNode2 
        Node1 
        Node2 
        Node3 
          Nth level Node1 
      ChildNode3 
ParentNode5 

上面的數據只是一個示例,顯示數據的層次結構。我不知道嵌套列表,字典,ienumerable或鏈接列表,這將是最好的相關的性能。謝謝

+0

你能告訴你究竟要去尋找什麼?數據結構的效率非常重要。 –

+0

感謝您的回覆。這些節點將是字符串類型,我將使用contains()或正則表達式在其中搜索字符串 –

+0

是否事先爲節點定義了「父子關係」? –

回答

0

如果您知道搜索將在一個級別上進行,那麼您可能需要一個列表列表:每個級別的一個列表。如果您的層次結構有N個級別,則您有N個列表。每一個包含的節點:

ListNode 
    Data // string 
    ParentIndex // index of parent in the previous list 

所以搜索4級,你去到列表中該級別及做你contains或正則表達式中進行測試級別的每個節點上。如果它匹配,那麼ParentIndex的值將使您成爲父項,並且其ParentIndex將使您得到祖父母等。

這樣,您不必擔心瀏覽層次結構,除非找到匹配項,而且您不必編寫嵌套或遞歸算法來遍歷樹。

您也可以維護您的層次結構,每個頂級節點都包含一個子節點列表,並且僅爲搜索而構建此次級列表。