#include "BinaryTree.h" template void BinaryTree::destroyTree(BinaryTreeNode* nodePtr) { if (nodePtr) // != NULL { destroyTree(nodePtr->getLeftPtr()); destroyTree(nodePtr->getRightPtr()); delete nodePtr; } } template void BinaryTree::_preorder(void visit(const T&), BinaryTreeNode* nodePtr) const { if (nodePtr) { T item = nodePtr->getItem(); visit(item); _preorder(visit, nodePtr->getLeftPtr()); _preorder(visit, nodePtr->getRightPtr()); } } template void BinaryTree::_inorder(void visit(const T&), BinaryTreeNode* nodePtr) const { if (nodePtr) // != NULL { T item = nodePtr->getItem(); _inorder(visit, nodePtr->getLeftPtr()); visit(item); _inorder(visit, nodePtr->getRightPtr()); } } template void BinaryTree::_postorder(void visit(const T&), BinaryTreeNode* nodePtr) const { if (nodePtr) { T item = nodePtr->getItem(); _postorder(visit, nodePtr->getLeftPtr()); _postorder(visit, nodePtr->getRightPtr()); visit(item); } } template void BinaryTree::_printindented(void visit(const T&, int), BinaryTreeNode* nodePtr) const { if (nodePtr) { T item = nodePtr->getItem(); _printInnerNodes(visit, nodePtr->getLeftPtr()); if (nodePtr->getLeftPtr() || nodePtr->getRightPtr()) visit(item); _printInnerNodes(visit, nodePtr->getRightPtr()); } }