来自算法导论 CLRS的一个习题。Chapter 6 Heap Sort. Exercise6.1-7
Show that, with the array representationfor storing an n-element heap, the leaves are the nodes indexed by ⌊n/2⌋ + 1, ⌊n/2⌋ + 2, . . . , n.
首先用一个例子来验证,如图1所示,
非叶节点有20+21+22=1+2+4=7个,叶节点有K+1 (23=8)个。共有15个节点,叶结点开始于第8个,即第 [15/2]+1个,满足结论“叶结点开始于[n/2]+1”
然后开始证明,分为两种情况,完全二叉树和不完全二叉树。
证明之前先清楚高度的定义。一个节点的高度就是从这个节点到叶结点的路径包含的边的数目,树(包括二叉树,堆)的高度被定义为根节点的高度。
(1)如果是完全二叉树
如果是完全二叉树,假设非叶节点有K(20+21+22=1+2+4=7)个,叶节点有K+1 (23=8)个。
假设完全二叉树的高度为h,则
非叶子节点的数目20+21+22