1. Generalize the preceding exercise to obtain a k-d heap, in which each item can have k individual keys. You should be able to obtain the following bounds: insert in O(log N), deleteMin in O(2k log N), and buildHeap in O(kN).
2. Show that the k-d heap can be used to implement a double-ended priority queue.
3. Abstractly, generalize the k-d heap so that only levels that branch on key #1 have two children (all others have one).
a. Do we need pointers?
b. Clearly, the basic algorithms still work; what are the new time bounds?