×
Samples Blogs Make Payment About Us Reviews 4.9/5 Order Now

Program That Uses a Binary Tree and Heap Using Java Programming Language Assignment Solution

June 18, 2024
Dr. Ethan Taylor
Dr. Ethan
🇬🇧 United Kingdom
Java
Dr. Ethan Taylor holds a Ph.D. in Computer Science from the University of Oxford. With over 850 assignments completed, he brings extensive expertise in data structures, algorithms, and programming languages. Ethan specializes in array manipulation, dynamic memory allocation, and algorithm optimization, providing students with comprehensive guidance and practical solutions for their Array class interface homework.
Key Topics
  • Instructions
    • Objective
  • Requirements and Specifications
Tip of the day
Familiarize yourself with OCaml's pattern matching; it simplifies handling recursive data structures like lists and trees, making your code concise and easier to debug.
News
In 2024, Girls Who Code introduced a Data Science + AI track in their free summer programs for high school students, fostering skills in cybersecurity and creative coding​

Instructions

Objective

Write a Java assignment program that uses a binary tree and heap using.

Requirements and Specifications

program-that-uses-binary-trees-and-heaps-in-Java-programming-language (1) (1)
program-that-uses-binary-trees-and-heaps-in-Java-programming-language 1 (1)
program-that-uses-binary-trees-and-heaps-in-Java-programming-language 2 (1)

Source Code

HEAP // // // The code for the class Heap. // // public methods: // insert (HeapElem newElement): insert a new element (with an integer key and a double data fields) to the heap // extractMax (): remove and return the data field of the heap element with maximum key // isEmpty(): return true if the heap is empty, false otherwise. // getSize(): return the number of elements in the heap // getMax(): return the data field of the heap element with the maximum key // preOrder(): print the heap elements (their key and data fields) in pre-order public class Heap implements PriorityQueueADT { private HeapElem[] heap; // the tree represented with an array private int size, maxSize; // the constructor for an originally empty heap public Heap(int newSize) { maxSize = newSize; heap = new HeapElem[maxSize]; size = 0; } // the constructor when the heap is initiated with an array a. The array is heapified by calling buildHeap. public Heap(HeapElem[] a) { heap = a; size = a.length; buildHeap(); } // from bottom to top, call reheapDown (bubble down). private void buildHeap() { // update this to call reheapDown a smaller number of times. if (size <= 1) { return; } int lastToCheck = (size - 2)/2; for (int i = lastToCheck - 1; i >= 0; i--) reheapDown(i); } // swap is called from reheapDown and reheapUp private void swap(int i, int j) { HeapElem temp = heap[i]; heap[i] = heap[j]; heap[j] = temp; } // bubble up the element at position index; called from insert private void reheapUp(int index) { int parent = (index + 1) / 2 - 1; if (index > 0 && heap[parent].key < heap[index].key) { swap(parent, index); reheapUp(parent); } } // bubble down the element at position index; called from insert private void reheapDown(int top) { int maxChild; int left = 2 * top + 1; int right = 2 * top + 2; if (left < size) { if (right >= size || heap[left].key > heap[right].key) maxChild = left; else maxChild = right; if (heap[top].key < heap[maxChild].key) { swap(top, maxChild); reheapDown(maxChild); } } } // insert; place the newKey in the last position, reheapUp, and update size public void insert(HeapElem newElement) { if (size < maxSize) { heap[size] = newElement; reheapUp(size); size++; } } // insert; place the newKey in the last position, reheapUp, and update size public void insert(int key, double data) { HeapElem newElement = new HeapElem(key, data); insert(newElement); } // remove and return the data field of the heap element with the maximum key public double extractMax() { HeapElem res = null; if (size > 0) { res = heap[0]; heap[0] = heap[--size]; reheapDown(0); } return res.data; } // return true if the heap is empty, false otherwise. public boolean isEmpty() { return size == 0; } // return the number of elements in the heap public int getSize() { // implement this. return size; } // return the data field of the heap element with the maximum key public double getMax() { // implement this. return heap[0].data; } // print the heap elements (their key and data fields) in pre-order public void preOrder() { if (size == 0) { return; } preorderStep(0); } private void preorderStep(int i) { heap[i].print(); if (2*i + 1 < size) { preorderStep(2*i + 1); if (2*i + 2 < size) { preorderStep(2*i + 2); } } } } PRIORITY QUEUE ADT // // This code declares the interface PriorityQueueADT including signatures and the public methods. public interface PriorityQueueADT { public void insert ( int key, double data ); public double extractMax() ; public double getMax() ; public boolean isEmpty() ; public int getSize() ; }

Similar Samples

Explore our programming homework samples showcasing our expertise in Java, Python, C++, and more. Each example demonstrates our commitment to delivering high-quality solutions tailored to students' needs. Whether it's algorithms, data structures, or web development projects, our samples reflect our proficiency and dedication to academic excellence. See for yourself why students trust us with their programming assignments