Q
二叉查找树的深度
0
A
回答
0
1)构建一个高度为h
的完整二叉树(h
是最小数字,例如2^h - 1
> =数组中元素的数量)。此时您可以忽略输入数组。显然,这棵树具有最小深度(任何深度较小的树都不能有足够的节点来存储所有数组元素)。
2)现在你可以使用简单的递归方法填充这个数组元素:
i)填充左子树。
ii)将最小的未使用号码放入当前节点。
iii)填写正确的子树。
不要忘记在开始遍历之前删除2^h - 1 - n
树叶(其中n
是输入数组大小)(此步骤是必需的,因为完整树的大小为2^h - 1
,但数组中只有n
个元素)。
一个O(n)
该算法的实现是非常有前途的(您可以明确地构建树,删除多余的树叶,然后遍历它,因为树中的节点数为O(n)
)。
+0
对于迟到的回复感到抱歉,非常感谢你。你可以展示C函数对于上面的实现会是什么样子?我对c很陌生,而且在执行时遇到问题。 – overflow 2014-09-15 06:39:03
相关问题
- 1. 查找二叉树的最大深度
- 2. 查找二叉查找树的高度
- 3. 二叉搜索树 - 查找高度和深度
- 4. 查找二叉树中节点的深度不是BST
- 5. 查找二叉搜索树的最小深度
- 6. 查找二叉树
- 7. 二叉树查找
- 8. 返回二叉查找树的高度
- 9. 计算二叉搜索树的深度?
- 10. 如何使用Prolog找到二叉树的深度
- 11. 如何找到深度在列表中记述的二叉树
- 12. 展平二叉查找树
- 13. 查找二叉搜索树中每个深度的节点数量
- 14. 无法找出二叉树的高度
- 15. 二叉树高度
- 16. 如何查找并返回二叉树的最底部(最深节点)节点?二叉搜索树?
- 17. 查找二叉树的根值?
- 18. 查找二叉树的边框
- 19. 查找二叉树中的节点
- 20. 二叉树的深层副本
- 21. 二叉树的长度
- 22. 大小为1的二叉树的最大深度
- 23. 在二进制搜索树中查找数据点的深度
- 24. 在二叉树中查找循环
- 25. 递归遍历二叉查找树
- 26. 使用二叉树查找Anagrams
- 27. 使用Prolog查找二叉树的高度
- 28. 查找树的最大深度
- 29. 二叉搜索树中的深度与距离
- 30. 给定深度的Swift二叉树列表节点
你只需要找到深度,或者你需要找到树? – 2014-09-12 15:00:41
@ AD.Net号码它像日志(array.length)(也许+1)。 – kraskevich 2014-09-12 15:30:55
@ user2040251,当然,谢谢。我只用6-7的数字,错过了每个子数组的两半 – 2014-09-12 15:40:01