【发布时间】:2013-05-21 18:51:32
【问题描述】:
我需要有关计算二叉树高度的理论方面的帮助,通常是符号。
我已阅读以下文章:
Calculating height of a binary tree
其中一篇文章给出了以下符号:
height(node) = max(height(node.L), height(node.R)) + 1
假设我有以下二叉树:
10
/ \
5 30
/ \ / \
4 8 28 42
因此,我是否计算左侧节点 (8) 上的最大值和右侧 (42) 上的最大值节点,然后加 1?我不太明白这个符号是如何计算树高的。
【问题讨论】:
-
这是一种递归算法。
height调用自己,直到它到达树的每个分支的底部。 -
我要补充一点,当它到达底部时,它会检查高度是否大于现有存储的高度,如果是,则更新它。
-
@ChrisChambers 感谢您的回复。那么我们是否将
node.L乘以node.R作为示例,当前树的高度是多少? -
@Phorce :我们没有增加任何东西。 node.L 指的是节点的左孩子。当前树的高度为 2
-
我建议在插入树类时将树高设置为树类的属性。也就是说,每次插入时,检查一下是否在树下更远,如果是,则更新高度。
标签: data-structures binary-tree