  TreeIterator treeIterator = new TreeIterator(tree4);
  treeIterator.setPreorder();


  System.out.println("\nPreorder traversal:");
  while (treeIterator.hasNext()) {
    System.out.println(treeIterator.next());
  }  // end while



public static void main(String[] args) {
  BinaryTree tree3 = new BinaryTree(new Integer(70));

  // build the tree in Figure 10-9
  BinaryTree tree1 = new BinaryTree();
  tree1.setRootItem(new Integer(40));
  tree1.attachLeft(new Integer(30));
  tree1.attachRight(new Integer(50));

  BinaryTree tree2 = new BinaryTree();
  tree2.setRootItem(new Integer(20));
  tree2.attachLeft(new Integer(10));
  tree2.attachRightSubtree(tree1);

  BinaryTree binTree =   // tree in Figure 10-9
         new BinaryTree(new Integer(60), tree2, tree3);

  TreeIterator btIterator = new TreeIterator(binTree);
  btIterator.setInorder();

  while (btIterator.hasNext()) {
    System.out.println(btIterator.next());
  }  // end while

  BinaryTree leftTree = binTree.detachLeftSubtree();
  TreeIterator leftIterator = new TreeIterator(leftTree);

  // iterate through the left subtree
  leftIterator.setInorder();
  while (leftIterator.hasNext()) {
    System.out.println(leftIterator.next());
  }  // end while

  // iterate through binTree minus left subtree
  btIterator.setInorder();
  while (btIterator.hasNext()) {
    System.out.println(btIterator.next());
  }  // end while
} // end main
