The below hints are for CS 244, assignment 9, A09_Heaps They may or may not be useful. They may or may not contain erroars. They are intended to be thought on. Such thought may (or may not) lead to a solution. Other solutions may be possible. Good luck. --------------------------- enqueue //Push key onto back of m_vect vector m_vect.push_back(entry); <-- can also use std::vector functions //call reheapifyUp with the index of the newly inserted key reheapifyUp(m_vect.size()-1); ----- Along the same lines dequeue will also need to use clever indexing // Store root element on top of the heap in a temp variable T temp = m_vect[0]; // copy last element into first location m_vect[0] = m_vect[size()-1]; and the built in m_vect.pop_back() may also be useful Notice that reheaping in the downward direction would likely start at index zero ---- For the makeHeap function a for loop from 0 to source.size()-1 may be useful along with a call to the enqueue function ---- The getMaxToMin requires the destruction and then reconstruction of the current heap Notice you must return a vector of type vector So I would start something like: vector retVect; T max; // Add elements into retVect max, then 2nd max, then... while (m_vect.empty() == false) Then note: the dequeue function returns the current maximum and removes it from the heap and the std::vector function push_back may also be usefule Finally remember to make the heap again using the retVect and then return the retVect