//This is the implementation file tree.cpp. This is the implementation for //the template class SearchTree. The interface is in the file tree.h. namespace TreeSavitch { template void SearchTree::insert(T item, TreeNode*& subTreeRoot) { if (subTreeRoot == NULL) subTreeRoot = new TreeNode(item, NULL, NULL); else if (item < subTreeRoot->data) insert(item, subTreeRoot->leftLink); else //item >= subTreeRoot->data insert(item, subTreeRoot->rightLink); } template void SearchTree::insert(T item) { insert(item, root); } template bool SearchTree::inTree(T item, TreeNode* subTreeRoot) const { if (subTreeRoot == NULL) return false; else if (subTreeRoot->data == item) return true; else if (item < subTreeRoot->data) return inTree(item, subTreeRoot->leftLink); else //item >= link->data return inTree(item, subTreeRoot->rightLink); } template bool SearchTree::inTree(T item) const { return inTree(item, root); } template //uses iostream: void SearchTree::inOrderShow(TreeNode* subTreeRoot) const { if (subTreeRoot != NULL) { inOrderShow(subTreeRoot->leftLink); cout << subTreeRoot->data << " "; inOrderShow(subTreeRoot->rightLink); } } template //uses iostream: void SearchTree::inOrderShow( ) const { inOrderShow(root); } template void SearchTree::deleteSubtree(TreeNode*& subTreeRoot) { if (subTreeRoot != NULL) { deleteSubtree(subTreeRoot->leftLink); deleteSubtree(subTreeRoot->rightLink); //subTreeRoot now points to a one node tree. delete subTreeRoot; subTreeRoot = NULL; } } template SearchTree::~SearchTree( ) { deleteSubtree(root); } }//TreeSavitch