Source of 23.21.java


  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