From 4882cd51fa3b40acdeda1d9808e1c8a8781d5231 Mon Sep 17 00:00:00 2001 From: Tuhin Mondal Date: Fri, 21 Jun 2024 21:44:33 -0700 Subject: [PATCH] Improved documentation for BST --- BinarySearchTree.h | 6 ++++++ BinaryTree.h | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/BinarySearchTree.h b/BinarySearchTree.h index 87e9300..9ffc6c0 100644 --- a/BinarySearchTree.h +++ b/BinarySearchTree.h @@ -40,6 +40,7 @@ public: bool search(const T& target, T& returnedItem) const; }; +// Caller function for private _insert() method template void BinarySearchTree::insert(const T& newEntry) { @@ -48,6 +49,7 @@ void BinarySearchTree::insert(const T& newEntry) this->size++; } +// Inserts and sorts a new node into BST template BinaryTreeNode* BinarySearchTree::_insert(BinaryTreeNode* nodePtr, BinaryTreeNode* newNodePtr) { BinaryTreeNode* pWalk = nodePtr, * parent = nullptr; @@ -74,6 +76,7 @@ BinaryTreeNode* BinarySearchTree::_insert(BinaryTreeNode* nodePtr, Bina return nodePtr; } +// Caller function for private _remove() function template bool BinarySearchTree::remove(const T& item) { BinaryTreeNode* removed = _remove(this->root, item); @@ -84,6 +87,7 @@ bool BinarySearchTree::remove(const T& item) { return false; } +// Removes a node from BST template BinaryTreeNode* BinarySearchTree::_remove(BinaryTreeNode* nodePtr, const T& target) { BinaryTreeNode* parNode = nullptr; @@ -128,6 +132,7 @@ BinaryTreeNode* BinarySearchTree::_remove(BinaryTreeNode* nodePtr, cons return nullptr; } +// Caller function for private _search() function template bool BinarySearchTree::search(const T& target, T& returnedItem) const { @@ -142,6 +147,7 @@ bool BinarySearchTree::search(const T& target, T& returnedItem) const return false; } +// Searches for a node and returns it if found. template BinaryTreeNode* BinarySearchTree::_search(BinaryTreeNode* nodePtr, const T& target) const { diff --git a/BinaryTree.h b/BinaryTree.h index 41e48ac..652cd99 100644 --- a/BinaryTree.h +++ b/BinaryTree.h @@ -40,14 +40,19 @@ public: [[nodiscard]] int getSize() const { return size; }; + // Caller function for private destroyTree() method void clear() { destroyTree(root); root = 0; size = 0; } + // Caller function for private _preorder() method void preOrder(void visit(const T&)) const { _preorder(visit, root); } + // Caller function for private _inorder() method void inOrder(std::function visit) const { _inorder(visit, root); } + // Caller function for private _postorder() method void postOrder(void visit(const T&)) const { _postorder(visit, root); } + // Caller function for private _printTree() method void printTree(void visit(const T&, int)) const { _printTree(visit, root, 1); } // abstract functions to be implemented by derived class @@ -70,6 +75,7 @@ private: }; +// Recursively deletes every node in the tree template void BinaryTree::destroyTree(BinaryTreeNode* nodePtr) { @@ -81,6 +87,7 @@ void BinaryTree::destroyTree(BinaryTreeNode* nodePtr) } } +// Traverses through tree in preorder template void BinaryTree::_preorder(void visit(const T&), BinaryTreeNode* nodePtr) const { @@ -92,6 +99,7 @@ void BinaryTree::_preorder(void visit(const T&), BinaryTreeNode* nodePtr) } } +// Traverses through tree in inorder template void BinaryTree::_inorder(std::function visit, BinaryTreeNode* nodePtr) const { @@ -104,6 +112,7 @@ void BinaryTree::_inorder(std::function visit, BinaryTreeNode } } +// Traverses through tree in postorder template void BinaryTree::_postorder(void visit(const T&), BinaryTreeNode* nodePtr) const { @@ -115,6 +124,7 @@ void BinaryTree::_postorder(void visit(const T&), BinaryTreeNode* nodePtr) } } +// Prints tree using function pointer template void BinaryTree::_printTree(void visit(const T&, int), BinaryTreeNode* nodePtr, int level) const {