Heaps and Priority Queues Study Guide
Author: Josh Hug

Overview

Priority Queue. A Max Priority Queue (or PQ for short) is an ADT that supports at least the insert and delete-max operations. A MinPQ supposert insert and delete-min.

Heaps. A max (min) heap is an array representation of a binary tree such that every node is larger (smaller) than all of its children. This definition naturally applies recursively, i.e. a heap of height 5 is composed of two heaps of height 4 plus a parent.

Running times of various PQ implementations. Know the running time of the three primary PQ operations for an unordered array, ordered array, and heap implementation.

Note: The reason I've given lots of problems here is not because this is a more important topic, but because there are just so many interesting problems.

C level

  1. Is an array that is sorted in descending order also a max-oriented heap?
  2. (Textbook 2.4.14) What is the minimum number of items that must be exchanged during a remove-the-max operationin a heap of size N with no duplicate keys? Give a heap of size 15 for which the minimum is achieved. Answer the same qusetion for two and three successive remove-the-maximum operations. Textbook 2.4.2 (assume we'd also like to support delete operations)
  3. Problem 3 from Princeton's Fall 2009 midterm or Problem 4 from Princeton's Fall 2008 midterm.
  4. Why do we leave the 0th position empty in our array representation for heaps?

B level

  1. (Textbook 2.4.7) The largest item in a heap must appear in position 1, and the second largest must appear in position 2 or 3. Give the list of positions in a heap of size 31 where the kth largest CAN appear, and where the kth largest CANNOT appear for k=2, 3, 4. Assume values are distinct.
  2. (Textbook 2.4.10) Suppose we wish to avoid wasting one position in a heap-ordered array pq[], putting the largest value in pq[0], its children in pq[1] and pq[2], and so forth, proceeding in level order. Where are the parents and children of pq[k]?
  3. (Textbook 2.4.21) Explain how to use a priority queue to implement the stack and queue data types.
  4. (Adapted from Textbook 2.4.27). Add a min() method to a maximum-oriented PQ. Your implementation should use constant time and constant extra space.
  5. Problem 4 from Princeton's Spring 2008 midterm.
  6. Problem 6 from my Fall 2014 midterm.
  7. Problem 4 from Princeton's 2014 midterm.
  8. Problem 5a and 5b of my Spring 2013 midterm.
  9. Problem 3 from my Fall 2014 midterm.

A level

  1. Design a data type that supports insert in O(log N) time, find-the-median in O(1) time, and delete-the-median in O(log N) time.
  2. Design a data type that supports insert in O(log N) time, delete-the-max in O(log N) time, and delete-the-minimum in O(log N) time.
  3. Problem 7 from Princeton's Fall 2010 midterm.
  4. Problem 8 from Princeton's Spring 2012 midterm.