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();