public class TreeTest {

    public static void show (String name, BinaryTree tree) {
	System.out.println("\nHere is " + name + ":\n");
	System.out.println(tree);
	System.out.println("\nHere is a better view:\n");
	GraphViewer.view(tree);
    }

    public static void main (String [] args) {
	
	BinaryTreeMaker<String> m = new BinaryTreeMaker<String>();
	BinaryTree<String> tree1 = 
	    m.make("Jack",
		   m.make("Sharon",
			  m.make(),
			  m.make("Fred")),
		   m.make("Abby",
			  m.make("Brad"),
			  m.make("Dan",
				 m.make("Eileen"),
				 m.make())));
	show("tree1", tree1);

	BinaryTreeMaker<Integer> t2 = new BinaryTreeMaker<Integer>();
	
	BinaryTree<Integer> tree2 =
	    t2.make(33,
		    t2.make(42,
			    t2.make(11,
				    t2.make(12),
				    t2.make(16,
					    t2.make(99),
					    t2.make())),
			    t2.make(65,
				    t2.make(),
				    t2.make(5))),
		    t2.make(94,
			    t2.make(29),
			    t2.make(14)));
	
	show("tree2", tree2);

	System.out.println("Its height is " + tree2.height());
	System.out.println("END OF TREE");

	System.out.println("tree2 search 11: " + tree2.search(11));
	System.out.println("tree2 search 33: " + tree2.search(33));
	System.out.println("tree2 search 94: " + tree2.search(94));
	System.out.println("tree2 search 100: " + tree2.search(100));

	Visitor<Integer> vis = new Visitor<Integer>();
	System.out.println("Preorder:");
	tree2.preorder(vis); System.out.println();
	System.out.println("Inorder:");
	tree2.inorder(vis); System.out.println();
	System.out.println("Postorder:");
	tree2.postorder(vis); System.out.println();

    }

}
