Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Reimplement the downheap and upheap methods, such that these methods use recursion from the program provided below. (and no loop). Write a main method that

Reimplement the downheap and upheap methods, such that these methods use recursion from the program provided below. (and no loop). Write a 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). Please do not post an answer if cannot do this and the code must compile.

public class HeapPriorityQueue {

/** An implementation of a priority queue using an array-based heap.

*/ public class HeapPriorityQueue extends AbstractPriorityQueue {

/** primary collection of priority queue entries */ }

protected ArrayList> heap = new ArrayList<>( ); /** Creates an empty priority queue based on the natural ordering of its keys. */

public HeapPriorityQueue( ) {

super( ); } /

** Creates an empty priority queue using the given comparator to order keys. */

public HeapPriorityQueue(Comparator comp) {

super(comp); } //

protected utilities protected int parent(int j) { return (j1) / 2; }

// truncating division

protected int left(int j) { return 2*j + 1; }

protected int right(int j) { return 2*j + 2; }

protected boolean hasLeft(int j) {

return left(j) < heap.size( ); }

protected boolean hasRight(int j) { return right(j) < heap.size( ); }

/** Exchanges the entries at indices i and j of the array list. */

protected void swap(int i, int j) {

Entry temp = heap.get(i); heap.set(i, heap.get(j)); heap.set(j, temp); }

/** Moves the entry at index j higher, if necessary, to restore the heap property. */

protected void upheap(int j) {

while (j > 0) {

// continue until reaching root (or break statement)

int p = parent(j);

if (compare(heap.get(j), heap.get(p)) >= 0) break;

// heap property verified

swap(j, p); j = p; // continue from the parent's location

}

}

/** Moves the entry at index j lower, if necessary, to restore the heap property.

*/ protected void downheap(int j) {

while (hasLeft(j))

{ // continue to bottom (or break statement)

int leftIndex = left(j);

int smallChildIndex = leftIndex;

// although right may be smaller

if (hasRight(j)) {

int rightIndex = right(j);

if (compare(heap.get(leftIndex),

heap.get(rightIndex)) > 0)

smallChildIndex = rightIndex;

// right child is smaller }

if (compare(heap.get(smallChildIndex), heap.get(j)) >= 0)

break;

// heap property has been restored

swap(j, smallChildIndex);

j = smallChildIndex; // continue at position of the child

}

}

// public methods

/** Returns the number of items in the priority queue.

*/ public int size( ) {

return heap.size( );

}

/** Returns (but does not remove) an entry with minimal key (if any). */

public Entry min( ) {

if (heap.isEmpty( )) return null;

return heap.get(0); } /**

Inserts a key-value pair and returns the entry created. */

public Entry insert(K key, V value) throws IllegalArgumentException {

checkKey(key);

// auxiliary key-checking method (could throw exception)

Entry newest = new PQEntry<>(key, value); heap.add(newest);

// add to the end of the list upheap(heap.size( ) 1);

// upheap newly added entry return newest; }

/** Removes and returns an entry with minimal key (if any). */

public Entry removeMin( ) {

if (heap.isEmpty( ))

return null;

Entry answer = heap.get(0); swap(0, heap.size( ) 1);

// put minimum item at the end heap.remove(heap.size( ) 1);

// and remove it from the list; downheap(0); // then fix new root return answer;

}

}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

DB2 11 The Ultimate Database For Cloud Analytics And Mobile

Authors: John Campbell, Chris Crone, Gareth Jones, Surekha Parekh, Jay Yothers

1st Edition

1583474013, 978-1583474013

More Books

Students also viewed these Databases questions