// File: tree.h // // A binary tree class #ifndef _tree_h #define _tree_h #include #include // Exception handling class. Object of this type is thrown when // memory allocation fails // class MemoryError { // no members } ; // TYPE must support assignment and << // TYPE must have a copy constructor template class Tree ; template class TreeNode { friend class Tree ; public: TYPE data ; Tree left ; Tree right ; void *operator new(size_t) ; void operator delete(void *) ; protected: TreeNode() {} TreeNode(const TYPE& t) : data(t) {} } ; template class Tree { public: Tree() ; Tree(const TYPE&) ; Tree(const TYPE&, const Tree&, const Tree&) ; ~Tree() ; void *operator new(size_t) ; void operator delete(void *) ; void inorder() ; void preorder() ; void postorder() ; TreeNode *root ; } ; #endif