import BinaryTree; import BinaryTreeCursor; import BinaryTreePrinter; import NodeBasedBinaryTree; import NodeBasedBinaryTreeCursor; import SimpleOutput; /** * A very simple tester for node-based binary trees. */ public class NBBT_Tester { // +--------+-------------------------------------------------- // | Fields | // +--------+ SimpleOutput out; NodeBasedBinaryTree tree; BinaryTreePrinter printer; // +-------------+--------------------------------------------- // | Constructor | // +-------------+ public NBBT_Tester() { out = new SimpleOutput(); tree = new NodeBasedBinaryTree(); printer = new BinaryTreePrinter(); } // NBBT_Tester() // +---------+------------------------------------------------- // | Methods | // +---------+ /** * Summarize the status of the tree. */ public void summarize(String caption) { out.println("*** " + caption + " ***"); out.println("Size: " + tree.size()); out.println("Depth: " + tree.depth()); printer.printTree(out, tree); out.println(); } // summarize(String) // +---------+------------------------------------------------- // | Methods | // +---------+ public static void main(String[] args) { // Create the tester. NBBT_Tester tester = new NBBT_Tester(); tester.summarize("Empty Tree"); // A cursor for use with this tree. BinaryTreeCursor cursor; // Set the root. tester.tree.setRoot("A"); tester.summarize("A at root"); // Set the left child. cursor = tester.tree.rootCursor(); cursor.setLeft("B"); tester.summarize("After setting the left child"); // Set the right child. cursor.setRight("C"); tester.summarize("After setting the right child"); // Set the leftmost grandchild. cursor.downLeft(); cursor.setLeft("D"); tester.summarize("After setting B's left child"); // Move up and replace A by X cursor.up(); cursor.setValue("X"); tester.summarize("After setting A to X"); // Delete the B subtree. cursor.downLeft(); cursor.delete(); tester.summarize("After deleting B's subtree"); } // main(String[]) } // class NBBT_Tester