我需要从分层平面集合中构建一个树,用点(。)分隔,就像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; }
}
有什么建议吗?
答案 0 :(得分:1)
使用此回答中给出的Trie数据结构Parsing one terabyte of text and efficiently counting the number of occurrences of each word
修改#1中的Trie代码以存储名称空间
走出Trie并将内容输出到控制台。
如果您需要更多详细信息,请对此进行评论,我可以快速编写代码。