1: // Represent each leaf as a one-node tree
2: BinaryTreeInterface<String> dTree = new BinaryTree<>();
3: dTree.setTree("D");
4: BinaryTreeInterface<String> fTree = new BinaryTree<>();
5: fTree.setTree("F");
6: BinaryTreeInterface<String> gTree = new BinaryTree<>();
7: gTree.setTree("G");
8: BinaryTreeInterface<String> hTree = new BinaryTree<>();
9: hTree.setTree("H");
10: BinaryTreeInterface<String> emptyTree = new BinaryTree<>();
11:
12: // Form larger subtrees
13: BinaryTreeInterface<String> eTree = new BinaryTree<>();
14: eTree.setTree("E", fTree, gTree); // Subtree rooted at E
15: BinaryTreeInterface<String> bTree = new BinaryTree<>();
16: bTree.setTree("B", dTree, eTree); // Subtree rooted at B
17: BinaryTreeInterface<String> cTree = new BinaryTree<>();
18: cTree.setTree("C", emptyTree, hTree); // Subtree rooted at C
19: BinaryTreeInterface<String> aTree = new BinaryTree<>();
20: aTree.setTree("A", bTree, cTree); // Desired tree rooted at A
21:
22: // Display root, height, number of nodes
23: System.out.println("Root of tree contains " + aTree.getRootData());
24: System.out.println("Height of tree is " + aTree.getHeight());
25: System.out.println("Tree has " + aTree.getNumberOfNodes() + " nodes");
26:
27: // Display nodes in preorder
28: System.out.println("A preorder traversal visits nodes in this order:");
29: Iterator<String> preorder = aTree.getPreorderIterator();
30: while (preorder.hasNext())
31: System.out.print(preorder.next() + " ");
32: System.out.println();
33: // Version 4.0