Problem of the Day At low tide, a ship docks in the harbor Ship is 9’ above the water line when...
-
Upload
ginger-nichols -
Category
Documents
-
view
215 -
download
0
Transcript of Problem of the Day At low tide, a ship docks in the harbor Ship is 9’ above the water line when...
Problem of the Day
At low tide, a ship docks in the harbor Ship is 9’ above the water line when it
docks Over the side hangs a rope ladder w/ rungs
1’ apart Tide rises at a rate of 9” per hour
After 6 hourswhat length of ladder will still be above
water?
Problem of the Day
At low tide, a ship docks in the harbor Ship is 9’ above the water line when it
docks Over the side hangs a rope ladder w/ rungs
1’ apart Tide rises at a rate of 9” per hour
After 6 hourswhat length of ladder will still be above
water?
9’ – the ladder will rise with the boat!
LECTURE 39:IMPLEMENTING HEAPS (& TREES & BINARYTREES)
CSC 212 – Data Structures
Priority Queue
Priority queue uses strict ordering of data Values assigned priority when added to the
queue Priorities used to process in completely
biased order Return element only from find() & remove()
PRIORITYQUEUE Operations
DEQUE QUEUE PRIORITYQUEUE
addFirst()addLast()
enqueue() addElement()
peekFirst()peekLast()
first() find()
removeFirst()removeLast()
dequeue() remove()
Elements in a PriorityQueue
PriorityQueues use more to hold data Details not specified, implementations may
differ Data stored has 2 items defining how it
is used PQ will only use priority – the importance
of element Element important data program actually
cares about
Is PRIORITYQUEUE Linear?
PriorityQueue yet another Collection Prioritize each element contained in the
collection PQ is organized from lowest to highest
priority Implementation not required: this could
be ADT Often use HEAP (it is faster) & order is
theoretical
Is PRIORITYQUEUE Linear?
PriorityQueue yet another Collection Prioritize each element contained in the
collection PQ is organized from lowest to highest
priority Implementation not required: this could
be ADT Often use HEAP (it is faster) & order is
theoretical
Is PRIORITYQUEUE Linear?
PriorityQueue yet another Collection Prioritize each element contained in the
collection PQ is organized from lowest to highest
priority Implementation not required: this could
be ADT Often use HEAP (it is faster) & order is
theoretical
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
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
Reheapify Up
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
Reheapify Down
removeMin() removes & returns root’s element Must remove last node to remain complete
tree Last added node’s element swapped with
root’s Then remove node from the complete tree
Reheapify process restores heap’s order Starts at root and works down heap If out-of-order, swap with smaller child
Stop at leaf or when node is legal
BinaryTree
Picturing LinkedBinaryTree
B
B
A C
LinkedBinaryTree
root
size4
D
A C
D
BinaryTree
Picturing LinkedHeap
B
B
A C
LinkedHeap
root
size4
D
A C
D
Nodes in a LinkedHeap
B
B
A CD
A C
D
B
References in a LinkedHeap
B
D
A C
A C
D
Trees Recursion
Trees are recursive structure Subtree defined by a node C is root of this subtree B root of this subtree D root of this subtree
Recursive methods common Can be used going up tree Required going down the tree Often easiest way to define actions
A
B DC
G HE F
I J K
Common pattern for recursive methods in Java:public static int factorial(int i) { if (i <= 1) {
return 1; } else {
int nextI = i – 1; int result = factorial(nextI); return i * result; }
}
Writing Recursive Methods
Common pattern for recursive methods in Java:public static int factorial(int i) { if (i <= 1) {
return 1; } else {
int nextI = i – 1; int result = factorial(nextI); return i * result; }
}
Writing Recursive Methods
Base case: Start with check for base case
Common pattern for recursive methods in Java:public static int factorial(int i) { if (i <= 1) {
return 1; } else {
int nextI = i – 1; int result = factorial(nextI); return i * result; }
}
Writing Recursive Methods
Base case: Solution is simple
Common pattern for recursive methods in Java:public static int factorial(int i) { if (i <= 1) {
return 1; } else {
int nextI = i – 1; int result = factorial(nextI); return i * result; }
}
Writing Recursive Methods
Recursive Step: • Take 1 step to solution
Common pattern for recursive methods in Java:public static int factorial(int i) { if (i <= 1) {
return 1; } else {
int nextI = i – 1; int result = factorial(nextI); return i * result; }
}
Writing Recursive Methods
Recursive Step: • Take 1 step to solution• Make 1 or more recursive calls
Common pattern for recursive methods in Java:public static int factorial(int i) { if (i <= 1) {
return 1; } else {
int nextI = i – 1; int result = factorial(nextI); return i * result; }
}
Writing Recursive Methods
Recursive Step: • Take 1 step to solution• Make 1 or more recursive calls• (Simple process computes result)
Your Turn
Get into your groups and complete activity
For Next Lecture
Week #12 assignment due tomorrow Programming Assignment #2 due ???
Will send out if enough reviews received by 5PM today
BinaryTree, Heap, & PriorityQueue Quiz Wed.