struct Node { // a node in the tree
Object element; // the element
Node* parent; // parent
Node* left; // left child
Node* right; // right child
Node() : element(Object()) // default constructor
{ parent = left = right = NULL; }
Node* sibling() const { // get our sibling
return (this == parent->left ? parent->right : parent->left);
}
};
typedef Node* NodePtr; // a node pointer