Download presentation
Presentation is loading. Please wait.
Published byGinger Nichols Modified over 9 years ago
1
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 hours what length of ladder will still be above water?
2
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 hours what length of ladder will still be above water? 9’ – the ladder will rise with the boat!
3
CSC 212 – Data Structures
4
Priority Queue Priority queue uses strict ordering of data Values assigned priority when added to the queue completely biased order Priorities used to process in completely biased order Return element only from find() & remove()
5
P RIORITY Q UEUE Operations D EQUE Q UEUE P RIORITY Q UEUE addFirst() addLast() enqueue()addElement() peekFirst() peekLast() first()find() removeFirst() removeLast() dequeue()remove()
6
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
7
Is P RIORITY Q UEUE 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 H EAP (it is faster) & order is theoretical
8
Is P RIORITY Q UEUE 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 H EAP (it is faster) & order is theoretical
9
Is P RIORITY Q UEUE Linear?
10
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
11
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
12
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
13
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
14
BinaryTree Picturing LinkedBinaryTree B BAC Linked BinaryTree root size 4 D A C D
15
BinaryTree Picturing LinkedHeap B BAC LinkedHeap root size 4 D A C D
16
Nodes in a LinkedHeap B BAC D A C D
17
B References in a LinkedHeap B D A C AC D
18
Trees Recursion A B D C G H E F I J K
19
recursive 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
20
recursive 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
21
recursive 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
22
recursive 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: 1 step Take 1 step to solution
23
recursive 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: 1 step Take 1 step to solution Make 1 or more recursive calls
24
Writing Recursive Methods Recursive Step: 1 step Take 1 step to solution Make 1 or more recursive calls (Simple process computes result)
25
Your Turn Get into your groups and complete activity
26
For Next Lecture Week #12 assignment due tomorrow Programming Assignment #2 Programming Assignment #2 due ??? Will send out if enough reviews received by 5PM today BinaryTree, Heap, & PriorityQueue Quiz Wed.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.