This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: ECE608 Homework #5 Solution (1) CLR 6.1-6 No, ( 23 , 17 , 14 , 6 , 13 , 10 , 1 , 5 , 7 , 12 ) is not a heap because the heap property does not hold between the 4th element and its second child, the 9th element (i.e., 6 < 7). (2) CLR 6.1-7 Let i represent the index of a node in a heap. PROOF: Since a leaf in a heap is a node with no left son, for every leaf we should have; 2 i > n . That is; i = ⌊ n/ 2 ⌋ + 1 , ⌊ n/ 2 ⌋ + 2 , ..., n. (3) CLR 6.2-6 If you put a value at the root that is less than every value in the left and right subtrees, then MAX-HEAPIFY will be called recursively until a leaf is reached. To make the recursive calls traverse the longest path to a leaf, choose values that make MAX-HEAPIFY always recurse on the left child. It follows the left branch when the left child is ≥ the right child, so putting 0 at the root and 1 at all the other nodes, for example, will accomplish that. With such values, MAX-HEAPIFY will be called h times (where h is the heap height, which is the number of edges in the longest path from the root to a leaf), so its running time will be Θ( h ) (since each call does Θ(1) work), which is Θ(lg n ). Since we have a case in which MAX-HEAPIFY ’s running time is Θ(lg n ), its worst-case running time is Ω(lg n ). (4) CLR 6.3-3 Let H be the height of the heap. 1 Two subtleties to beware of: • Be careful not to confuse the height of a node (longest distance from a leaf) with its depth (distance from the root). • If the heap is not a complete binary tree (bottom level is not full), then the nodes at a given level (depth) don’t all have the same height. For example, although all nodes at depth H have height 0, nodes at depth H − 1 can have either height 0 or height 1. For a complete binary tree, it’s easy to show that there are ceilingleftbigg n 2 h +1 ceilingrightbigg nodes of height h . But the proof for an incomplete tree is tricky, and is not derived from the proof for a complete tree. The proof is by induction on h . • Base case: Show that it’s true for h = 0 (i.e., that # leaves ≤ ceilingleftbigg n 2 h +1 ceilingrightbigg = ceilingleftbigg n 2 ceilingrightbigg ). The nodes at height 0 (i.e., the tree leaves) are at depths H and H − 1. They consist of – all nodes at depth H – the nodes at depth H − 1 that are not parents of depth- H nodes Let x be the number of nodes at depth H — that is, the number of nodes in the bottom (possibly incomplete) level. Note that n − x is odd, because the n − x nodes above the bottom level form a complete binary tree, and a complete binary tree has an odd number of nodes (1 less than a power of 2). Thus if n is odd, x is even, and if n is even, x is odd....
View Full Document
- Fall '11