[英]Most performant way to find all the leaf nodes in a tree data structure
我有一个树数据结构,其中每个节点可以有任意数量的子代,树可以具有任何高度。 获取树中所有叶节点的最佳方法是什么? 除了遍历树中的每个路径,直到遇到叶子节点,还有其他更好的方法吗?
在实践中,树的最大深度通常为5左右,树中的每个节点大约有10个子节点。
我对其他类型的数据结构或特殊树持开放态度,这将使叶节点特别理想。
我正在使用javascript,但实际上只是在寻找一般建议,任何语言等。
谢谢!
找到一棵树的叶子是O(n)
,这对于一棵树来说是最佳的,因为您必须查看O(n)
位置以检索所有n
事物以及沿途的分支节点。 恒定的开销是分支节点。
如果增加分支因子,例如让每个分支有32个子节点而不是2个子节点,则会显着减少开销节点的数量,这可能会使遍历更快。
如果跳过一个分支,则不会在该分支中包含值,因此我们必须查看所有分支。
内存布局对于最佳检索至关重要,因此子列表应该是连续的,而不是链接列表,节点应按检索顺序相互放置。
您的树越是静态,可以完成的布局就越好。
一体化布局
全部排列成一体
专业版
骗局
两阵列布局
内部节点指向叶子
专业版
骗局
数组数组(动态大小,向量的C ++向量)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.