Problem of the Day
description
Transcript of Problem of the Day
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!
LECTURE 37:COMPLETE BINARY TREES & HEAPS
CSC 212 – Data Structures
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
95
67
BinaryTree
Picturing Linked BinaryTree
B
CA
D
B
A C
D
BinaryTreeroot
size4
Legal
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 it2
95
67
Illegal
2
95
7
6
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
2
95
67
Illegal
2
95
67
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 reheapify with parent node
Stop only when either case occurs: Found properly ordered node & parent Binary tree's root is reached
6
addElement() in a Heap
2
5
79
6
1
addElement() in a Heap
2
5
79
6
1
Start Your Reheapify!
2
5
79
6
1
Start Your Reheapify!
2
5
79
1
6
Start Your Reheapify!
2
5
79
1
6
Reheapify Must Continue
2
5
79
1
6
Reheapify Must Continue
2
5
79
2
6
Reheapify Sounds Icky
1
5
79
2
6
Check If We Should Continue
1
5
79
2
6
Stop At The Root
1
5
79
2
6
addElement() Once Again
1
5
79 3
2
6
Reheapify Begins Anew
1
5
79 3
2
6
Heap-Order Property Maintained
1
5
79 3
2
6
Done With This Reheapify!
1
5
79 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
5
Before removeMin() is called
1
2
97
5
Move Last Element Up To Root
1
2
97
5
Move Last Element Up To Root
1
2
97
5
Move Last Element Up To Root
9
2
7
5
Compare Parent W/Smaller Child
9
2
7
5
Compare Parent W/Smaller Child
9
2
7
5
Compare Parent W/Smaller Child
2
9
7
5
Continue Going Down W/Node
2
9
7
5
Continue Going Down W/Node
2
9
7
5
Swap If Out Of Order
2
7
9
5
Check If We Should Continue
2
7
9
5
Stop When We Reach a Leaf
2
7
9
Implementation Excuses
Reheapify steps will travel height of tree O(log n) 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 +
2But how much space will
this need for to hold a heap?
Array to Implement Heap
2
0
2
0
Array to Implement Heap
2
9
0 1
2
0
1
9
Array to Implement Heap
2
9 3
0 1 2
2
0
1
9
2
3
`
Array to Implement Heap
2
9 3
99
0 1 2 3
2
0
1
9
2
3
3
99
`
Array to Implement Heap
2
9 3
99
0 1 2 3
2
0
1
9
2
3
3
99
`
Add nodes to end of the SequenceSimilarly, remove node at end
NO space is wasted for this!
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
95
67
Your Turn
Get into your groups and complete activity
For Next Lecture
Read 12.2 for Monday's lecture How does a heap relate to PriorityQueue? How do computers prioritize, & what does it
matter? How would we organize the patients in an
ER?
Week #13 posted today & due week from Tues.
Programming Assignment #2 available now