【发布时间】:2015-10-01 21:46:14
【问题描述】:
我需要从由点 (.) 分隔的分层平面集合构建一棵树,例如 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; }
}
有什么建议吗?
【问题讨论】:
-
您的树似乎不正确。 A3 和 A4 应该向右移动一步(从 A5 下方)
-
IParentChild接口是否模拟运行算法的结果?FullName和Name有什么区别? -
到目前为止你尝试过什么?
-
你想生成文本文件吗?或者你想从文本文件解析成集合?
-
我猜第 6 行的 A2 应该在第 5 行的 A3 之后?
标签: c# algorithm hierarchical-data