Efficiency: all operations constant time (except DESTROY).

In order for GET_TREE(T,Up) and WHICH_SIDE(T) to be constant time, we need back pointer from child to parent.

Memory Sharing: same no sharing policy as for lists.

We could use the header-based implementation technique, but, for the sake of variety, we won't.

A tree will be a pointer to its root node. An empty tree will be represented by the NULL pointer.

Drawback: we cannot side-effect an empty tree like we could an empty list.

For this reason, we must typically require that an operation which modifies its tree argument return the modified tree as its result.