<算法导论>练习6.1

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+...+2h1+1

6.1-2
一个堆中的元素必定为 2 m + k − 1 2^m+k-1 2m+k1个,其中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,超出堆元素限制,所以它没有左孩子,同理也没有右孩子,所以是叶结点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值