1: // @author Frank M. Carrano, Timothy M. Henry
2: // @version 5.0
4: // Represent each leaf as a one-node tree
5: BinaryTreeInterface<String> dTree = new BinaryTree<>();
6: dTree.setTree("D", null, null);
8: BinaryTreeInterface<String> fTree = new BinaryTree<>();
9: fTree.setTree("F", null, null);
11: BinaryTreeInterface<String> gTree = new BinaryTree<>();
12: gTree.setTree("G", null, null);
14: BinaryTreeInterface<String> hTree = new BinaryTree<>();
15: hTree.setTree("H", null, null);
17: BinaryTreeInterface<String> emptyTree = new BinaryTree<>();
19: // Form larger subtrees
20: BinaryTreeInterface<String> eTree = new BinaryTree<>();
21: eTree.setTree("E", fTree, gTree); // Subtree rooted at E
23: BinaryTreeInterface<String> bTree = new BinaryTree<>();
24: bTree.setTree("B", dTree, eTree); // Subtree rooted at B
26: BinaryTreeInterface<String> cTree = new BinaryTree<>();
27: cTree.setTree("C", emptyTree, hTree); // Subtree rooted at C
29: BinaryTreeInterface<String> aTree = new BinaryTree<>();
30: aTree.setTree("A", bTree, cTree); // Desired tree rooted at A
32: // Display root, height, number of nodes
33: System.out.println("Root of tree contains " + aTree.getRootData());
34: System.out.println("Height of tree is " + aTree.getHeight());
35: System.out.println("Tree has " + aTree.getNumberOfNodes() + " nodes");
37: // Display nodes in preorder
38: System.out.println("A preorder traversal visits nodes in this order:");
39: Iterator<String> preorder = aTree.getPreorderIterator();
40: while (preorder.hasNext())
41: System.out.print(preorder.next() + " ");
42: System.out.println();