Question: 1 / An implementation of a priority queue using an array-based heap. / 2 public class HeapPriorityQueue extends AbstractPriorityQueue { 3 / primary collection of
1 / An implementation of a priority queue using an array-based heap. /
2 public class HeapPriorityQueue
3 / primary collection of priority queue entries /
4 protected ArrayList
5 / Creates an empty priority queue based on the natural ordering of its keys. /
6 public HeapPriorityQueue() { super(); }
7 / Creates an empty priority queue using the given comparator to order keys. /
8 public HeapPriorityQueue(Comparator
super(comp); }
9 // protected utilities
10 protected int parent(int j) { return (j1) / 2; } // truncating division
11 protected int left(int j) { return 2j + 1; }
12 protected int right(int j) { return 2j + 2; }
13 protected boolean hasLeft(int j) { return left(j) < heap.size(); }
14 protected boolean hasRight(int j) { return right(j) < heap.size(); }
15 / Exchanges the entries at indices i and j of the array list. /
16 protected void swap(int i, int j) {
17 Entry
18 heap.set(i, heap.get(j));
19 heap.set(j, temp);
20 }
21 / Moves the entry at index j higher, if necessary, to restore the heap property. /
22 protected void upheap(int j) {
23 while (j > 0) { // continue until reaching root (or break statement)
24 int p = parent(j); 25 if (compare(heap.get(j), heap.get(p)) >= 0) break; // heap property veried
26 swap(j, p);
27 j = p; // continue from the parent's location
28 }
29 }
Use the HeapPriorityQueue class on the above lines of codes. Reimplement the downheap and upheap methods, such that these methods use recursion(and no loop). Save the code in file heapPriorityQueue.java. The file should contain the main method that will create a heap using a sequence of insert operations: (5,A),(4,B),(7,F),(1,D),(3,J),(6,L),(8,G),(2,H).
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
