

/**
 * BTreeTester.java
 *
 *
 * Created: Tue Oct 15 21:40:28 2002
 *
 * @author <a href="mailto:bina@cse.buffalo.edu "</a>
 * @version
 */
import java.util.*;

public class BTreeTester {

   public static void main (String[] args) {
      //generate the subtrees representing all the operands and
      // operators
      
      BTree A = new BTree(new Character('A'), null,null);
      BTree B = new BTree(new Character('B'), null,null);
      BTree C = new BTree(new Character('C'), null,null);
      BTree D = new BTree(new Character('D'), null,null);
      BTree op1 = new BTree(new Character('+'), null,null);
      BTree op2 = new BTree(new Character('+'), null,null);
      BTree op3 = new BTree(new Character('*'), null, null);
      
      BTree rightSubTree;
      BTree leftSubTree;
      BTree expTree;

      // build the left right sub tree
      op3.setLeft(C);
      op3.setRight(D);
      rightSubTree = op3;

      // build the right sub tree

      op1.setLeft(A);
      op1.setRight(B);
      leftSubTree = op1;

      // build the main tree

      op2.setLeft(leftSubTree);
      op2.setRight(rightSubTree);
      
      expTree = op2;

      // do a preorder traversal of the tree
      // preorder: root(pre), left sub tree, right sub tree
      System.out.print("Prefix Expression of A+B+C*D is ");
      Iterator l = expTree.preorderTraversal();
      while (l.hasNext()) {
	 System.out.print(l.next());
      } // end of while ()
      
      System.out.println();
      System.out.println();
      //accept size visitor and print its output
      System.out.print("The number of nodes in the A+B+C*D tree is ");
      System.out.println(expTree.acceptVisitor(new SizeVisitor(),null));
      System.out.println();
      System.out.println();

      //accept height visitor and print its output
      System.out.print("The height of exp tree A+B+C*D tree is ");
      System.out.println(expTree.acceptVisitor(new HeightVisitor(),null));
      System.out.println();
      System.out.println();

      System.out.print("Postfix Expression of A+B+C*D is ");
      l = (Iterator)expTree.acceptVisitor(new PostOrderVisitor(),null);
      
      while (l.hasNext()) {
	 System.out.print(l.next());
      } // end of while ()
	      System.out.println();
   } // end of main ()
   
}// BTreeTester
