2016-03-08 101 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将使您得到祖父母等。

这样,您不必担心浏览层次结构,除非找到匹配项,而且您不必编写嵌套或递归算法来遍历树。

您也可以维护您的层次结构,每个顶级节点都包含一个子节点列表,并且仅为搜索而构建此次级列表。