"设H为树的高度。如果堆不是完整的 二叉树(因为底层未满),则 给定深度的节点并不都具有相同的高度。例如。, 尽管深度为 H 的所有节点的高度都为 0,但节点 深度为 H-1 的高度可能为 0 或 1"
在搜索语句的解释时找到了这个解释--“N 元素堆中具有给定高度 h 的最大节点 = N/2^(h+1)” 根据 CLRS。
这是否意味着不同级别(不同深度)的节点可以具有相同的高度?
我知道没有。堆中叶子的数量是 N/2,这有什么关系吗???
例如,这是一个有效的堆:
__1__
/ \
3 5
/ \ / \
4 9 6 10
/ \
7 11
现在比较节点5和节点4的情况,他们在不同的层级(即不同的深度),但高度相同(即它们作为根的子树高度相同)。
另一方面,节点 3 和 5 在同一层,但它们的高度不同。
关于术语的注释。引用有“如果堆不是完整的二叉树......”。其他来源将上述示例定义为“完全二叉树”,而所有叶子都在底层的树将被称为“完美二叉树”。所以我会把这句话读作“如果堆不是一个完美的二叉树......”。见维基百科:
有些作者使用术语 complete 来指代上面定义的 perfect 二叉树
这显然令人困惑,意味着我们总是需要验证作者对这些术语的含义。