This lab is a hands-on introduction to tree data structures. We'll use a Java applet (DrawTree) to display trees. 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/lab7/ into your new directory. Bring the tree.java file into an editor; this is the primary file you'll modify for this lab. Study and inspect it. 2) tree.java will not compile without your addition of a constructor for the TreeNode class. The signature for a suitable constructor is given. Also see the uses of this constructor in main. After writing the constructor, compile tree.java and run it. (As it stands, it doesn't print anything). Make sure it does not fault with a runtime error. 3) now compile the files CanvasTree.java and DrawTree.java 4) loading applet.html into "hotjava" should now draw the four-node tree defined in main of tree.java 5) take a look at DrawTree.java and CanvasTree.java to get an impression of how this applet operates. (If you're interested in details of the applet or algorithm, it's in G&T and I'd be happy to explain it to you.) 6) modify tree.java to build a much larger tree. Make sure you set the "the_tree" variable to hold your tree before the end of main is reached. You may want to introduce additional TreeNode variables to simplify the task of piecing your tree together: TreeNode branch1, branch2, branch3; branch1 = TreeNode("cantaloupe",Color.gray, null,null); branch2 = TreeNode("watermelon",Color.green, null,null); branch3 = TreeNode("melons",Color.black, branch1,branch2); Make a tree with perhaps 10 or so nodes. 7) inspect, using DrawTree, the shape of your large tree. Add more nodes if desired. 8) The following steps are independent of DrawTree so use "$ java Tree" to run and test your code. Implement the following: public static int size(TreeNode t) public static int height(TreeNode t) Implement at least one of the following tree-traversal algorithms: public static void inorder(TreeNode t) public static void preorder(TreeNode t) public static void postorder(TreeNode t) 9) Modify CanvasDraw to draw leaf nodes as rectangles (of width nodeSize) instead of ovals. 10) Make other modifications to DrawTree For example, add code to highlight a longest path in the tree (note: this is not trivial).