Pho*_*rce 11 binary-tree data-structures
我需要帮助计算二叉树高度的理论,通常是符号.
我看过以下文章:
其中一个帖子给出了以下符号:
height(node)= max(height(node.L),height(node.R))+ 1
我们假设我有以下二叉树:
10
/ \
5 30
/ \ / \
4 8 28 42
Run Code Online (Sandbox Code Playgroud)
因此,我是否计算左节点(8)和右边最大节点(42)的最大值,然后加1?我不太明白这种符号是如何工作的,以便计算树的高度.
Ond*_*zek 22
我将尝试解释这种递归算法的工作原理:
height(10) = max(height(5), height(30)) + 1
height(30) = max(height(28), height(42)) + 1
height(42) = 0 (no children)
height(28) = 0 (no children)
height(5) = max(height(4), height(8)) + 1
height(4) = 0 (no children)
height(8) = 0 (no children)
Run Code Online (Sandbox Code Playgroud)
因此,如果要计算height(10),则必须向下扩展递归,而不是向后替换结果.
height(5) = max(0, 0) + 1
height(30) = max(0, 0) + 1
height(10) = max(1, 1) + 1
height(10) = 2
Run Code Online (Sandbox Code Playgroud)
rog*_*hat 21
树的高度是树中从根到最深节点的路径长度.这是最短的算法
int height(Node root){
if(root == null )
return 0;
return 1+max{height(root.left), height(root.right)};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39528 次 |
| 最近记录: |