我有一个树数据结构,其中每个节点可以有任意数量的子节点,树可以是任何高度。获得树中所有叶节点的最佳方式是什么?在遍历树中的每条路径之前,是否可以做得更好,直到我击中叶节点?找到树数据结构中所有叶节点的最高性能方法
实际上,树的最大深度通常为5左右,树中的每个节点都会有大约10个孩子。
我接受其他类型的数据结构或特殊树,这些树会使叶节点特别优化。
我使用的是JavaScript,但实际上只是在寻找一般建议,任何语言等
谢谢!
我有一个树数据结构,其中每个节点可以有任意数量的子节点,树可以是任何高度。获得树中所有叶节点的最佳方式是什么?在遍历树中的每条路径之前,是否可以做得更好,直到我击中叶节点?找到树数据结构中所有叶节点的最高性能方法
实际上,树的最大深度通常为5左右,树中的每个节点都会有大约10个孩子。
我接受其他类型的数据结构或特殊树,这些树会使叶节点特别优化。
我使用的是JavaScript,但实际上只是在寻找一般建议,任何语言等
谢谢!
内存布局对于最优检索是必不可少的,所以子列表应该是连续的而不是链表,节点应该按照检索顺序依次放置。
您的树越静态,可以完成更好的布局。
全部在一个布局
所有在一个阵列中的全序
临
精读
两个阵列布局为内部节点
内部节点指向叶子
临
精读
阵列(矢量的动态尺寸,C++矢量)
查找树的叶子是O(n)
,这对于树是最佳的,因为您必须查看O(n)
地点以检索所有n
事物,以及沿途的分支节点。常量开销是分支节点。
如果我们增加分支因子,例如让每个分支有32个孩子而不是2个,我们大大减少了开销节点的数量,这可能使得遍历速度更快。
如果我们跳过一个分支,我们不包括该分支中的值,所以我们必须查看所有分支。