public class Tree {
    Visitable cargo;
    Tree left, right;

    public Tree (Visitable cargo, Tree left, Tree right) {
	this.cargo = cargo;
	this.left = left;
	this.right = right;
    }

    public String toString () {
	return cargo.toString ();
    }

    // inorder: traverse the tree inorder and invoke visit on
    // each node
    public static void inorder (Tree tree) {
	if (tree == null) return;
	inorder (tree.left);
	tree.cargo.visit ();
	inorder (tree.right);
    }
}

