最有效的添加树视图分支的算法

时间:2011-10-18 19:50:14

标签: algorithm treeview tree

我必须构建将分支(节点)添加到树视图中。我正在努力确定最低的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

所以树看起来像:

Tree

我能想到的是一个n ^ 2算法,每个条目扫描每个其他条目以查看它们是否属于子节点。 我也正在删除阵列中的条目,以便在添加时进行扫描。如果内存服务(可能不是),它会比n ^ 2小一点。

有没有更好的技巧?

1 个答案:

答案 0 :(得分:1)

假设您的语言有某种list / vector / resizable数组类型,这很容易。

为每个ID创建一个空列表。迭代每一行,如果ParentId不为null,则将Id添加到ParentId列表中。

现在,您可以在O(n)时间内为每个条目设置子项。