我是数据结构中树概念的新手。我可以为简单树问题写一个线性代码,但当我尝试将其转换为递归代码时,我非常挣扎。而且我无法为复杂树问题编写递归代码。但我知道树是如何工作的。当我尝试将线性代码转换为递归问题时,我遇到了问题“查找树的高度” 我可以绘制它并想象纸上的流。但我不能写递归。如何在树中使用递归
2
A
回答
4
这里的关键是要理解树的每个节点本身都是树。事实上,这可以让你实现递归算法。如您所知,任何递归算法都需要两部分:
- 停止标准。在这种情况下,我们将定义一个空(空)树的高度为0.
- 递归部分。在这种情况下,我们可以说树的高度是1加上其最深的孩子的高度。
因此,例如,如果我们在Java中实现这一点:
public static int height(Node n) {
if (n == null) {
return 0;
}
return 1 + Math.max(height(n.getLeft()), height(n.getRight()));
}
1
任何节点的高度,是其“最高”子节点+1的高度。因此,从根开始,您递归调用每个子节点上的查找高度函数,选择最大值,加1并返回那个价值。基本情况将是没有孩子的节点,在这种情况下返回0.
相关问题
- 1. 使用递归筛选树
- 2. 在树中递归搜索
- 3. 在二叉树中递归
- 4. 树中的递归
- 5. 递归Splay树
- 6. 树叉()递归
- 7. 递归从树
- 8. 树+递归
- 9. F#:递归树
- 10. 如何使用递归计算树中childern的数量
- 11. 如何在递归中使用字典
- 12. 无法在jsp中使用递归在jsp中显示树
- 13. 递归迭代(在Python树)
- 14. 递归和在二叉树
- 15. 的realloc在树上递归
- 16. jQuery中的递归树
- 17. 树遍历中的递归
- 18. 打印递归树
- 19. 递归排序树
- 20. 递归树建设
- 21. 递归树生成
- 22. 递归创建树
- 23. 树遍历递归
- 24. React JS递归树
- 25. 递归树映射
- 26. 递归算法树
- 27. 递归树搜索
- 28. PHP类树递归
- 29. 如何做二叉树的尾递归?
- 30. 如何通过目录树递归使用PowerShell
不知道到底你的问题是什么,但递归适用于树正是它工作在别处以同样的方式。关键是识别一个重复/重复的逻辑,然后将其编码为一个自称的函数。 –
您需要先学习inorder.preorder.postorder遍历和它们。对于每个代码,代码只有4行,然后在遍历期间输入的每个新级别添加计数器 – minigeek