我必须构建将分支(节点)添加到树视图中。我正在努力确定最低的O(n)技术是什么。
我的数据如下:
Id ParentId Value
0 null Bob
1 0 Amy
2 1 Susan
3 1 Matt
4 2 Keith
5 4 Craig
6 4 Derrick
所以树看起来像:
我能想到的是一个n ^ 2算法,每个条目扫描每个其他条目以查看它们是否属于子节点。 我也正在删除阵列中的条目,以便在添加时进行扫描。如果内存服务(可能不是),它会比n ^ 2小一点。
有没有更好的技巧?
答案 0 :(得分:1)
假设您的语言有某种list / vector / resizable数组类型,这很容易。
为每个ID创建一个空列表。迭代每一行,如果ParentId不为null,则将Id添加到ParentId列表中。
现在,您可以在O(n)时间内为每个条目设置子项。