从平的汇集buiding的Hierachial树

时间:2015-10-01 21:46:15

标签: c# algorithm hierarchical-data

我需要从分层平面集合中构建一个树,用点(。)分隔,就像C#中的命名空间一样。以下是一些条目值作为集合(已订购):

A0.A0.A0
A1
A1.A2
A2.A3.A3.A2
A3.A2
A3.A4.A5.A3
A3.A4.A5.A4
B0.B1.B0
B1.B2
B1.B2.B3
B1.B2.B4

此集合看起来像C#中的命名空间。所以我们假设它们是命名空间(因为你可以理解A.A.A.A命名空间是非常合法的。)

我需要什么?

我需要这个集合中的父子树(请注意,我们节省了一些空间将一些名称连接在一起):

A0.A0.A0
A1
   A2
A2.A3.A3.A2
A3
   A2
   A4.A5        
      A3
      A4
B0.B1.B0
B1.B2
     B3
     B4

在这种情况下,我们只有6个根对象。

以下是我们算法的界面:

    public interface IParentChild
    {
        IEnumerable<IParentChild> Children { get; set; }
        string FullName { get; set; }
        string Name { get; set; }
    }

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

  1. 使用此回答中给出的Trie数据结构Parsing one terabyte of text and efficiently counting the number of occurrences of each word

  2. 修改#1中的Trie代码以存储名称空间

  3. 走出Trie并将内容输出到控制台。

  4. 如果您需要更多详细信息,请对此进行评论,我可以快速编写代码。