ObjectTree Contract

The ObjectTree class describes immutable binary trees of objects. An object binary tree is either the empty tree (a leaf) or a (non-empty) tree node with a value component that is an object and left and right components that are object binary trees. The trees are immutable in the sense that the value, left, and right components of a tree node cannot be changed after the tree node has been created (via the node() method).

There are no public constructor or instance methods for object binary trees; they are created and manipulated by the following class methods:

Class Methods

public static ObjectTree leaf()
Returns an empty object binary tree.

public static ObjectTree node (Object x, ObjectTree L, ObjectTree R)
Returns a new object binary tree node whose value is x, whose left subtree is L, and whose right subtree is R.

public static boolean isLeaf (ObjectTree T)
Returns true if T is a leaf and false if T is an object binary tree node.

public static Object value (ObjectTree T)
Returns the object that is the value component of the integer binary tree node T. Signals an exception if T is a leaf.

public static ObjectTree left (ObjectTree T)
Returns the object binary tree that is the left component of the object binary tree node T. Signals an exception if T is a leaf.

public static ObjectTree right (ObjectTree T)
Returns the object binary tree that is the right component of the object binary tree node T. Signals an exception if T is a leaf.