This short lab covers priority queues (heaps) implemented as balanced binary trees. We'll use the DrawTree applet to insert into, and to remove from, a heap of integers. First, we'll experiment with the program a bit. Then, we'll modify the code to display the heap's last node as a separate color. Finally, we'll modify the upHeap and downHeap methods to highlight the nodes inspected during their operation. First, make a directory for this lab. As usual, mail me your lab work as a text file when you're done. 1) copy the files from ~lorenz/cs35-2/lab9/ into your new directory. Bring the balanced-heap.java file into an editor; this is the primary file you'll modify for this lab. Study and inspect it; make sure you understand the definition of Node; the code for insert and removeMin should look familiar from lecture. 2) compile balanced-heap.java compile CanvasTree.java and DrawTree.java load applet.html into "hotjava". 3) play with the applet. Note that the insert button indicates the next integer to be inserted. After your tree contains a few levels, predict in advance what the tree will look like after an insert or removeMin. 4) add code to the insert/removeMin methods to set the color of the last node to red (or something other than blue) every time it changes. be sure not to set its color if the tree is empty (root == last == null). verify that your code works. 5) using the Nodes hilite field, modify the upHeap method to highlight all nodes accessed after an insert. (The DrawTree code calls the unHiLite method in the correct place to clear prior lit nodes.) Through testing, verify that your code works. 6) modify downHeap to highlight the nodes it inspects during a removeMin. (downHeap looks at both childern on a full internal node and should hilite both.) Hint: rewriting some of the code in downHeap may be easier than patching the existing code to do this; i.e. simplify the conditionals. Verify that your code works.