•By simply making the static utility functions members, they have direct access to the node class' public members, even if the node class is defined in the tree class' private section. This can be done without declaring our functions as friends.
•Static
member functions do not have a this pointer, just like non-member functions.
n
nclass tree {
n •••
n private:
n node* root; //root node of tree
n static void copy(node* &, const
node*);
n static void destroy(node*);
n static tree::node* add(node*, node*);
n static void traverse(const node*);
n