510 likes | 625 Views
Problem of the Day. You are trapped alone in a dark room with: Candle; Wood stove ; and Gas lamp (with full tank). You only have one match; what do you light 1 st ?. Problem of the Day. You are trapped alone in a dark room with: Candle; Wood stove ; and Gas lamp (with full tank).
E N D
Problem of the Day • You are trapped alone in a dark room with: • Candle; • Wood stove; and • Gas lamp (with full tank). • You only have one match; what do you light 1st?
Problem of the Day • You are trapped alone in a dark room with: • Candle; • Wood stove; and • Gas lamp (with full tank). • You only have one match; what do you light 1st?
Problem of the Day • You are trapped alone in a dark room with: • Candle; • Wood stove; and • Gas lamp (with full tank). • You only have one match; what do you light 1st?
Problem of the Day • You are trapped alone in a dark room with: • Candle; • Wood stove; and • Gas lamp (with full tank). • You only have one match; what do you light 1st? The match!
CSC 212 – Data Structures Lecture 37:Complete Binary Trees & Heaps
Heaps • Binary-tree implementation with add & remove • Still structured using parent-child relationship • At most 2 children & 1 parent for each node in tree • Heaps must also satisfy 2 additional properties • Parent’s value smaller than its children’s values • Structure must form a complete binary tree 2 5 9 7 6
D C B A Picturing Linked BinaryTree B A C D
Complete Binary Tree • Specific way to organize a BinaryTree • Add & remove location defined so can be discussed • For this idea, trees must maintain specific shape • Fill lowest level first, then can start new level below it Legal Illegal 2 2 5 9 5 9 6 7 6 7
Complete Binary Tree • Specific way to organize a BinaryTree • Add & remove location defined so can be discussed • For this idea, trees must maintain specific shape • Fill lowest level first, then can start new level below it • Lowest level must be filled in from left-to-right Legal Illegal 2 2 5 9 5 9 7 6 7 6
What Is Purpose of a Heap? • Root has critical element that we always access • Element at root always has smallest value in heap • O(1)access time to root without any real effort • Complete binary trees makes adding data easy • Create leftmost child on lowest level • When a level completes, start next one • Useful when:
Reheapify • Insertion may violate heap-order property • Reheapify immediately after adding new element • Goes from new node to restore heap’s order • Compare priority of node & its parent • If out of order, swap node's elements • Continue reheapifywith parent node • Stop only when either case occurs: • Found properly ordered node & parent • Binary tree's root is reached
addElement() in a Heap 2 5 6 9 7
addElement() in a Heap 2 5 6 9 7 1
Start Your Reheapify! 2 5 6 9 7 1
Start Your Reheapify! 2 5 6 9 7 1
Start Your Reheapify! 2 5 1 9 7 6
Reheapify Must Continue 2 5 1 9 7 6
Reheapify Must Continue 2 5 1 9 7 6
Reheapify Sounds Icky 1 5 2 9 7 6
Check If We Should Continue 1 5 2 9 7 6
Stop At The Root 1 5 2 9 7 6
addElement() Once Again 1 5 2 9 7 6 3
Reheapify Begins Anew 1 5 2 9 7 6 3
Heap-Order Property Maintained 1 5 2 9 7 6 3
Done With This Reheapify! 1 5 2 9 7 6 3
Removing From a Heap • removeMin()must kill element at heap’s root • For a complete tree, must remove last node added • How to reconcile these two different demands? • Removed node's element moved to the root • Then remove node from the complete tree • Heap's order preserved by going down
Removing From a Heap • removeMin()must kill element at heap’s root • For a complete tree, must remove last node added • How to reconcile these two different demands? • Removed node's element moved to the root • Then remove node from the complete tree • Heap's order preserved by going down Censored
Removal Reheapify • Restores heap’s order during removeMin() • Reheapify removal work starts at root • Swap with smallest child, if out-of-order • Process then continues with old smallest child • Stop at leaf or when node is legal
Before removeMin() is called 1 2 5 7 9
Move Last Element Up To Root 1 2 5 7 9
Move Last Element Up To Root 1 2 5 7 9
Move Last Element Up To Root 9 2 5 7
Compare Parent W/Smaller Child 9 2 5 7
Compare Parent W/Smaller Child 9 2 5 7
Compare Parent W/Smaller Child 2 9 5 7
Continue Going Down W/Node 2 9 5 7
Continue Going Down W/Node 2 9 5 7
Swap If Out Of Order 2 7 5 9
Check If We Should Continue 2 7 5 9
Stop When We Reach a Leaf 2 7 5 9
Implementation Excuses • Reheapifysteps willtravel height of tree • O(logn) running time for each of these • Serves as bound for adding & removing from Heap • What drawbacks does heap have? • Coding and understanding heap can be confusing • Use unclear w/o PriorityQueue(hint: Monday)
Array-based BinaryTree • Node at index specified for location in Tree • Root node stored at index 0 • Root’s left child at index 1 • Right child of root at index 2 • Left child’s right child at index 4 • Right child’s left child at index 5 • Node at index n’s left child is at index 2n + 1 • Node at index n’s right child is at index 2n + 2
Array-based BinaryTree • Node at index specified for location in Tree • Root node stored at index 0 • Root’s left child at index 1 • Right child of root at index 2 • Left child’s right child at index 4 • Right child’s left child at index 5 • Node at index n’s left child is at index 2n + 1 • Node at index n’s right child is at index 2n + 2 But how much space will this need for to hold a heap?
Array to Implement Heap 2 2 0 0
Array to Implement Heap 2 9 2 0 1 9 0 1
Array to Implement Heap 2 9 3 2 0 1 9 2 3 ` 0 1 2
Array to Implement Heap 9 1 0 2 2 99 3 99 3 9 2 3 ` 0 1 2 3
Array to Implement Heap 2 9 3 2 0 99 9 2 3 3 99 1 Add nodes to end of the Sequence Similarly, remove node at end NO space is wasted for this! ` 0 1 2 3
Heaps • Binary-tree implementation with add & remove • Still structured using parent-child relationship • At most 2 children & 1 parent for each node in tree • Heaps must also satisfy 2 additional properties • Parent’s value smaller than its children’s values • Structure must form a complete binary tree 2 5 9 7 6
Your Turn • Get into your groups and complete activity