6.3-2
Why do we want the loop index
i in line 2 of BUILD-MAX-HEAP to decrease from
⌊A.length/2⌋ to 1 rather than increase from to
⌊A.length/2⌋?
Otherwise we won't be allowed to call MAX-HEAPIFY, since it will fail the condition of having the subtrees be max-heaps. That is, if we start with 1, there is no guarantee that A[2] and A[3] are roots of max-heaps.
6.3-3
Show that there are at most
⌈n/2h+1⌉ nodes of height
h in any
n-element heap.
The height of binary heap is as following:
A heap of size
n has at most
⌈n/2h+1⌉ nodes with height
h.
Key Observation: For any
n>0, the number of leaves of nearly complete binary tree is
⌈n/2⌉. Proof by induction
Base case: Show that it's true for
h=0. This is the direct result from above observation.
Inductive step: Suppose it's ture for
h−1. Let
Nh be the number of nodes at height
h in the n-node tree
T. Consider the tree
T′ formed by removing the leaves of
T. It has
n′=n−⌈n/2⌉=⌊n/2⌋ nodes. Note that the node at height
h in
T would be at height
h−1 in tree
T′. Let
N′h−1 denote the number ot nodes at height
h−1 in
T′, we have
Nh=N′h−1. By induction, we have
Nh=N′h−1=⌈n′/2h⌉=⌈⌊n/2⌋/2h⌉⩽⌈(n/2)/2h⌉=⌈n/2h+1⌉.
Comments
Post a Comment