package coahranm.bst;

public class BstTest {
  public static void main(String[] args) {
	  /* sequence of keys to insert */
	  int[] keys = {5,3,4,8,2,6,10,6};
      
      //construct a new BST
      BST tree = new BST();

      /* TEST INSERT */      
      //insert keys into BST and print each time
      for (int i=0; i<keys.length; i++) {
          tree.insert(keys[i]);
          System.out.println("insert " + keys[i] + ":");
          System.out.println(tree.toString());
      }

      /* NOW TEST DELETE */
      tree.remove(3); //node has two children
      System.out.println("remove 3: ");
      System.out.println(tree.toString());

      tree.remove(4); //node has one child
      System.out.println("remove 4: ");
      System.out.println(tree.toString());

     tree.remove(6); //node has zero children
      System.out.println("remove 6: ");
      System.out.println(tree.toString());

      tree.remove(8); //node has one child
      System.out.println("remove 8: ");
      System.out.println(tree.toString());

      tree.remove(5); //remove root (with two children)
      System.out.println("remove 5: ");
      System.out.println(tree.toString());

      tree.remove(12); //not in tree (should do nothing)
      System.out.println("remove 12: ");
      System.out.println(tree.toString());

      tree.remove(10); //remove root (with one child)
      System.out.println("remove 10: ");
      System.out.println(tree.toString());

      tree.remove(2); //remove root (with no children)
      System.out.println("remove 2: ");
      System.out.println(tree.toString());
  }
}
