/**
 *  Main file for Binary Tree Lab test driver.
 *  @author Autumn C. Spaulding
 *  Creation Date: 24 July 2000
 */
public class BinaryTreeLab
{
    public static void main(String args[])
    {
        // Construct several trees for testing purposes: one will stay
        // empty, one will have a single data element, and one will have
        // multiple data items.  (All start out empty, though.)
        K_BinaryTree<Integer> emptyTree = new K_CompleteRecBinTree<>();
        K_BinaryTree<Integer> singleNodeTree = new K_CompleteRecBinTree<>();
        K_BinaryTree<Integer> biggerTree = new K_CompleteRecBinTree<>();

        // Construct a print visitor to use with any style of traversal.
        NodeVisitor<Integer> printer = new PrintAction<>();

        // Add one data item to singleNodeTree.
        singleNodeTree.add(100);

        // Add multiple elements to biggerTree.
        biggerTree.add(12);
        biggerTree.add(7);
        biggerTree.add(3);
        biggerTree.add(4);
        biggerTree.add(8);
        biggerTree.add(25);
        biggerTree.add(0);
        biggerTree.add(142);
        biggerTree.add(17);
        biggerTree.add(26);

        // Print the height of an empty tree, a single-node tree, and a
        // non-empty tree (the bigger tree constructed above).
        System.out.println("Height of an empty tree: " +
                emptyTree.height() + "  (Expected: 0)");
        System.out.println("Height of a single-node tree: " +
                singleNodeTree.height() + "  (Expected: 1)");
        System.out.println("Height of the bigger tree: " +
                biggerTree.height() + "  (Expected: 4)");
        System.out.println();

        // Print the values in the bigger tree.
        System.out.println("******Breadth-First Traversal******");
        System.out.println("Expected: 12, 7, 3, 4, 8, 25, 0, 142, 17, 26 (on separate lines)");
        biggerTree.breadthFirstTraversal(printer);
        System.out.println();
        System.out.println("******Pre-Order Traversal******");
        System.out.println("Expected: 12, 7, 4, 142, 17, 8, 26, 3, 25, 0 (on separate lines)");
        biggerTree.preOrderTraversal(printer);
        System.out.println();

/*
        // Remove an item from the bigger tree.  Print the modified tree.
        System.out.println("Remove 7.");
        biggerTree.remove(7);
        System.out.println();
        System.out.println("******Breadth-First Traversal******");
        System.out.println("Expected: 12, 26, 3, 4, 8, 25, 0, 142, 17 (on separate lines)");
        biggerTree.breadthFirstTraversal(printer);
        System.out.println();
        System.out.println("******Pre-Order Traversal******");
        System.out.println("Expected: 12, 26, 4, 142, 17, 8, 3, 25, 0 (on separate lines)");
        biggerTree.preOrderTraversal(printer);
        System.out.println();
*/

    }

}    //end class BinaryTreeLab
