#ifndef TREE_H #define TREE_H #include class Tree { public: Tree() : root_(0) {} ~Tree() { clear(); } void insert(int); void remove_root(); void print(std::ostream & = std::cout, int = 1) const; bool member(int) const; void clear(); bool empty() const; private: // Private copy constructor and assignment operator prevents // unintentional shallow copies. Tree(const Tree&); Tree &operator=(const Tree &); struct Tree_Node * root_; // Recursive help-functions void insert(int, Tree_Node *&); void print(std::ostream &, const Tree_Node *, int) const; bool member(int, const Tree_Node *) const; }; #endif