/** Let's make a tree, and print it out. * There are 2 constructors we can call -- we can create a tree with a * single node, or with 2 existing trees and a new node , we can make a * bigger tree. */ import java.util.Iterator; public class Driver { public static void main(String [] args) { Tree c = new Tree(new Item("C")); Tree x = new Tree(new Item("X")); Tree h = new Tree(new Item("H"), c, x); Tree s = new Tree(new Item("S")); Tree r = new Tree(new Item("R"), s, h); Tree j = new Tree(new Item("J")); //Tree q = new Tree(new Item("Q"), j, null); Tree q = new Tree(new Item("Q")); Tree t = new Tree(new Item("T"), r, q); // default printout (preorder shown vertically) System.out.println(t); // 3 traversals // When we traverse, we need to remember to call getData because // the node itself does not have toString. We're only interested in // seeing the data (string) within. Iterator preorder = t.preorderIterator(); System.out.print("Preorder: "); while (preorder.hasNext()) System.out.print(((Node) preorder.next()).getData() + " "); System.out.println(); // When your traversals are ready, // un-comment-out this code. /* Iterator inorder = t.inorderIterator(); Iterator postorder = t.postorderIterator(); System.out.print("\nInorder: "); while (inorder.hasNext()) System.out.print(((Node) inorder.next()).getData() + " "); System.out.print("\nPostorder: "); while (postorder.hasNext()) System.out.print(((Node) postorder.next()).getData() + " "); System.out.println(); */ // Let's create a second tree, this time also to show fully // parenthesized version. Tree t1 = new Tree(new Item("25")); Tree t2 = new Tree(new Item("5")); Tree t3 = new Tree(new Item("6")); Tree t4 = new Tree(new Item("7")); Tree t5 = new Tree(new Item("9")); Tree diff = new Tree(new Item("-"), t1, t2); Tree sum = new Tree(new Item("+"), t3, t4); Tree prod = new Tree(new Item("*"), diff, sum); Tree total = new Tree(new Item("+"), prod, t5); // When you are ready to test, un-comment-out this code. /* System.out.println("\nA postfix expression:"); postorder = total.postorderIterator(); while(postorder.hasNext()) System.out.print(((Node) postorder.next()).getData() + " "); System.out.println(); System.out.println("Fully parenthesized infix:"); // ADD CODE HERE that will create iterator object, and then traverse // this object. System.out.println(); */ } }