6.1-1
高度为h的堆最多有:
1
+
2
+
2
2
+
.
.
.
+
2
h
1+2+2^2+...+2^h
1+2+22+...+2h个元素。
最少有
1
+
2
+
2
2
+
.
.
.
+
2
h
−
1
+
1
1+2+2^2+...+2^{h-1}+1
1+2+22+...+2h−1+1
6.1-2
一个堆中的元素必定为
2
m
+
k
−
1
2^m+k-1
2m+k−1个,其中2^m个元素构成了一棵完全二叉树,剩下的k-1个元素构成了叶节点。所以堆的最大高度是m+1,也就是lgn向下取整,这里的lg是指以e为底的指数。
6.1-3
这其实就是大根堆的定义,构建大根堆的算法决定了这一性质。
6.1-4
可能在叶节点的任意位置上,因为最小的元素必定不会有孩子节点。
6.1-5
一个已排序好的数组是一个最小堆
6.1-6
是的
6.1-7
叶节点是堆中最下面的一层,证明方式可以把下标代入求堆的左孩子的函数中,
LEFT(i)
return 2i
即求一下
2
∗
(
⌊
n
2
⌋
+
1
)
2*(\left \lfloor \frac{n}2 \right \rfloor +1)
2∗(⌊2n⌋+1),显然结果大于n,超出堆元素限制,所以它没有左孩子,同理也没有右孩子,所以是叶结点。