peek
.add
, peek
, and poll
in a heap.Is a sorted array a heap?
Here’s a barebones Heap
class that just stores integers:
public class Heap {
int[] A;
int size;
// other methods here
/** Return the smallest value in the heap without modifying the heap.
* Precondition: size >= 1 */
public int peek() {
// code here
}
}
Implement the peek
operation. Hint: it’s not a lot of code!
For the following problems, you may use without proof the fact that the height of a heap is O().
Analyze the runtime of add
.
Analyze the runtime of peek
.
Analyze the runtime of poll
.
Consider the changePriority
operation of the A3 PriorityQueue
interface, which has the following spec and header:
/** Change the priority associated with value v to p.
* Precondition: v is in the heap. */
public void changePriority(V v, P p);
In A3, a value (of type V
) and its associated priority (of type P
) are stored together in a wrapper class called Entry
, which simply has a value
field and a priority
field. The backing storage is then an array of type Entry
, so each node in the tree carries around both its value and its priority.
Devise an algorithm to implement changePriority
as efficiently as possible and give its runtime. Hint: it may not be all that efficient.