struct treenode { treenode *leftPtr; char data[40]; treenode *rightPtr; int CompareTo(treenode &compNode) { return strcmp(data, compNode.data); } treenode() {}; }; class Tree { public: Tree(); Tree(char[40]); ~Tree(); void insertNode( treenode *&, char[40]); void preOrderTraversal(treenode *); void inOrderTraversal(treenode *); void postOrderTraversal(treenode *); void findNode(treenode *, char[40] ,treenode* , treenode *&, treenode *&); void deleteItem(char[40]); treenode*& Root() {return rootPtr;} private: treenode *rootPtr; void DeleteHelper(treenode *); void DeleteNode(treenode *&); void Delete(treenode * & tree, char data[40], bool & found); void GetPredecessor(treenode *, char[40]); };