Question

C++ Question Can I get an example of a max heap that has an insert function,...

C++ Question

Can I get an example of a max heap that has an insert function, delete function and a print function?

Please use namespace std and iostream and whatever else is needed I guess.

0 0
Add a comment Improve this question Transcribed image text
Answer #1

`Hey,

Note: Brother in case of any queries, just comment in box I would be very happy to assist all your queries

#include <iostream>
#include<vector>
using namespace std;

// Data structure for Max Heap
struct PriorityQueue
{
private:
   // vector to store heap elements
   vector<int> A;

   // return parent of A[i]
   // don't call this function if it is already a root node
   int PARENT(int i)
   {
       return (i - 1) / 2;
   }

   // return left child of A[i]
   int LEFT(int i)
   {
       return (2 * i + 1);
   }

   // return right child of A[i]
   int RIGHT(int i)
   {
       return (2 * i + 2);
   }

   // Recursive Heapify-down algorithm
   // the node at index i and its two direct children
   // violates the heap property
   void heapify_down(int i)
   {
       // get left and right child of node at index i
       int left = LEFT(i);
       int right = RIGHT(i);

       int largest = i;

       // compare A[i] with its left and right child
       // and find largest value
       if (left < size() && A[left] > A[i])
           largest = left;

       if (right < size() && A[right] > A[largest])
           largest = right;

       // swap with child having greater value and
       // call heapify-down on the child
       if (largest != i) {
           swap(A[i], A[largest]);
           heapify_down(largest);
       }
   }

   // Recursive Heapify-up algorithm
   void heapify_up(int i)
   {
       // check if node at index i and its parent violates
       // the heap property
       if (i && A[PARENT(i)] < A[i])
       {
           // swap the two if heap property is violated
           swap(A[i], A[PARENT(i)]);

           // call Heapify-up on the parent
           heapify_up(PARENT(i));
       }
   }

public:
   // return size of the heap
   unsigned int size()
   {
       return A.size();
   }

   // function to check if heap is empty or not
   bool empty()
   {
       return size() == 0;
   }

   // insert key into the heap
   void insert(int key)
   {
       // insert the new element to the end of the vector
       A.push_back(key);

       // get element index and call heapify-up procedure
       int index = size() - 1;
       heapify_up(index);
   }

   // function to remove element with highest priority (present at root)
   void deletes()
   {

           // if heap has no elements, throw an exception
           if (size() == 0)
               {
               cout<<"Can't delete empty heap\n";
return;
               }

           // replace the root of the heap with the last element
           // of the vector
           A[0] = A.back();
           A.pop_back();

           // call heapify-down on root node
           heapify_down(0);


   }

   // function to return element with highest priority (present at root)
   int top()
   {

           // if heap has no elements, throw an exception
           if (size() == 0)
               {
               cout<<"Can't return empty heap\n";
return -1;
               }

           // else return the top (first) element
           return A.at(0);   // or return A[0];

       // catch and print the exception

   }
};

int main()
{
   PriorityQueue pq;

   // Note - Priority is decided by element's value

   pq.insert(3);
   pq.insert(2);
   pq.insert(15);

   cout << "Size is " << pq.size() << endl;

   cout << pq.top() << " ";
   pq.deletes();

   cout << pq.top() << " ";
   pq.deletes();

   pq.insert(5);
   pq.insert(4);
   pq.insert(45);

   cout << endl << "Size is " << pq.size() << endl;

   cout << pq.top() << " ";
   pq.deletes();

   cout << pq.top() << " ";
   pq.deletes();

   cout << pq.top() << " ";
   pq.deletes();

   cout << pq.top() << " ";
   pq.deletes();

   cout << endl << std::boolalpha << pq.empty();

   return 0;
}

​​​​​​​

Kindly revert for any queries

Thanks.

Add a comment
Know the answer?
Add Answer to:
C++ Question Can I get an example of a max heap that has an insert function,...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • please solve this question: Write a character Max-Heap Builder program in C++. The program should display...

    please solve this question: Write a character Max-Heap Builder program in C++. The program should display the menu below. Each item in the menu should be implemented in a function. a. Add a node. One node to be added to the max-heap. b. Delete a node. One node to be deleted from the max-heap. C. Search a node. Returns true if the node exists in the max-heap, otherwise it returns false. d. Print the tree. Prints the heap in level-order...

  • Using C++, data structures, C++ STL, inputs and expected outputs are shown below. Max Heap Heap...

    Using C++, data structures, C++ STL, inputs and expected outputs are shown below. Max Heap Heap is a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either > (in a max heap) or s (in a min heap) the key of C. The node at the "top" of the heap (with no parents) is called the root node. In binary-tree based heap, it...

  • Write a C program insertion and deletion functions for a max heap represented as a linked binary tree. Assume that each...

    Write a C program insertion and deletion functions for a max heap represented as a linked binary tree. Assume that each node has a parent field as well as the usual left child, right child, and key fields. -Condition : Do not use Array representation. Use the following structure. typedef struct node *treePointer; typedef struct node { int key; treePointer parent; treePointer leftChild, rightChild; }; - INPUT i k : Insert the node with the key value of k in...

  • Write a C program insertion and deletion functions for a max heap represented as a linked binary tree. Assume that each...

    Write a C program insertion and deletion functions for a max heap represented as a linked binary tree. Assume that each node has a parent field as well as the usual left child, right child, and key fields. -Condition : Do not use Array representation. Use the following structure. typedef struct node *treePointer; typedef struct node { int key; treePointer parent; treePointer leftChild, rightChild; };    - INPUT i k : Insert the node with the key value of k in...

  • A) Write a program to take n elements and insert them into a heap one by...

    A) Write a program to take n elements and insert them into a heap one by one. Include a function to print out the elements in the heap. B) Write a program to take n elements and insert them into a binary tree. Include a function to print out the elements in the tree. Add commenting if possible so I can learn from the code. Thanks! Programming language C++ please.

  • Write a program in Java to implement the max-priority queue using max-heap data structure. Implement the...

    Write a program in Java to implement the max-priority queue using max-heap data structure. Implement the max-heap data structure using an integer array of 10 cells. (Do not use Java in-built PriorityQueue class.) [In a max-heap, the root node and the intermediate node vales are always greater than their children.] First, take 10 integer values from the user and insert them in the max-priority queue. Then print the elements of the queue. After that, delete two elements from the queue...

  • using C++, NOT C language 1. Write a function called insert() to insert a node to...

    using C++, NOT C language 1. Write a function called insert() to insert a node to the beginning of a linked list. The data is passed into the function. For example insert(8) will insert a node at the beginning of the list with the number 8 in the data field. Each node in the linked list is a ListNode struct as discussed in class. 2. Write a function called print() that will traverse the entire linked list and print out...

  • Task: A ternary heap is like a binary heap, except instead of each node having a max of two children, each node has a max of three children. Given a ternary min heap, return true if it is a valid hea...

    Task: A ternary heap is like a binary heap, except instead of each node having a max of two children, each node has a max of three children. Given a ternary min heap, return true if it is a valid heap. That is, it satisfies the heap property (the parent is less than all of its children) Requirements: Implement an isValidHeap function to determine whether a particular array of integers constitutes a valid ternary min-heap. bool isValidHeap(int arr[])// example declaration...

  • C++: what is i and j. IMPORTANT I know it's 3 and 3 but can someone...

    C++: what is i and j. IMPORTANT I know it's 3 and 3 but can someone please explain how we can get to that conclusion by just reading the code, can it be explained to me because when i try to do it I get a different answer for i and j I got 1 and 4. #include <iostream> using namespace std; int main() { int i = 1; int j = 0; if (i++ == 1) { j =...

  • Language: C++ ○ For this question I task you with creating an Iterative Search function that...

    Language: C++ ○ For this question I task you with creating an Iterative Search function that works with the existing binary search tree of type string. This function will be inputted a variable of type string and will search for it within the existing and pre-declared binary tree. ○ The function appears just above the main, and is simply a placeholder. It can be altered as you wish. ○ Within the Main I have a simple program to prompt for...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT