algorithm - 添加 TreeView 分支的最有效算法

标签 algorithm treeview tree

我必须将分支(节点)添加到 TreeView 中。我正在努力确定最低 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 少一点。

有没有更好的技术?

最佳答案

假设您的语言有某种列表/向量/可调整大小的数组类型,这很容易。

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

您现在在 O(n) 时间内拥有每个条目的 child 。

关于algorithm - 添加 TreeView 分支的最有效算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812814/

相关文章:

java - 如何在树节点中没有父链接的情况下获取二叉树的根?

c++ - 音频处理 C++ - FFT

java - 二叉树遍历的问题

c++ - 节点代码或算法的通用树父

python - 达到 k 的最小步数

algorithm - O(N) 时间和 O(1) 空间的二叉树中的每个子树总和?

wpf - 为 WPF TreeView 启用滚动

python - tkinter Treeview 将 mysql 数据放入一列

c# - WPF 中的 Treeview 加载事件之后

c++ - 如何从边缘制作二叉树?