Improved documentation for BST

This commit is contained in:
Tuhin Mondal 2024-06-21 21:44:33 -07:00
parent cd2e1470ca
commit 4882cd51fa
2 changed files with 16 additions and 0 deletions

View File

@ -40,6 +40,7 @@ public:
bool search(const T& target, T& returnedItem) const;
};
// Caller function for private _insert() method
template<typename T>
void BinarySearchTree<T>::insert(const T& newEntry)
{
@ -48,6 +49,7 @@ void BinarySearchTree<T>::insert(const T& newEntry)
this->size++;
}
// Inserts and sorts a new node into BST
template<typename T>
BinaryTreeNode<T>* BinarySearchTree<T>::_insert(BinaryTreeNode<T>* nodePtr, BinaryTreeNode<T>* newNodePtr) {
BinaryTreeNode<T>* pWalk = nodePtr, * parent = nullptr;
@ -74,6 +76,7 @@ BinaryTreeNode<T>* BinarySearchTree<T>::_insert(BinaryTreeNode<T>* nodePtr, Bina
return nodePtr;
}
// Caller function for private _remove() function
template<typename T>
bool BinarySearchTree<T>::remove(const T& item) {
BinaryTreeNode<T>* removed = _remove(this->root, item);
@ -84,6 +87,7 @@ bool BinarySearchTree<T>::remove(const T& item) {
return false;
}
// Removes a node from BST
template<typename T>
BinaryTreeNode<T>* BinarySearchTree<T>::_remove(BinaryTreeNode<T>* nodePtr, const T& target) {
BinaryTreeNode<T>* parNode = nullptr;
@ -128,6 +132,7 @@ BinaryTreeNode<T>* BinarySearchTree<T>::_remove(BinaryTreeNode<T>* nodePtr, cons
return nullptr;
}
// Caller function for private _search() function
template<typename T>
bool BinarySearchTree<T>::search(const T& target, T& returnedItem) const
{
@ -142,6 +147,7 @@ bool BinarySearchTree<T>::search(const T& target, T& returnedItem) const
return false;
}
// Searches for a node and returns it if found.
template<typename T>
BinaryTreeNode<T>* BinarySearchTree<T>::_search(BinaryTreeNode<T>* nodePtr, const T& target) const
{

View File

@ -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<void(const T&)> 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<class T>
void BinaryTree<T>::destroyTree(BinaryTreeNode<T>* nodePtr)
{
@ -81,6 +87,7 @@ void BinaryTree<T>::destroyTree(BinaryTreeNode<T>* nodePtr)
}
}
// Traverses through tree in preorder
template<typename T>
void BinaryTree<T>::_preorder(void visit(const T&), BinaryTreeNode<T>* nodePtr) const
{
@ -92,6 +99,7 @@ void BinaryTree<T>::_preorder(void visit(const T&), BinaryTreeNode<T>* nodePtr)
}
}
// Traverses through tree in inorder
template<typename T>
void BinaryTree<T>::_inorder(std::function<void(const T&)> visit, BinaryTreeNode<T>* nodePtr) const
{
@ -104,6 +112,7 @@ void BinaryTree<T>::_inorder(std::function<void(const T&)> visit, BinaryTreeNode
}
}
// Traverses through tree in postorder
template<typename T>
void BinaryTree<T>::_postorder(void visit(const T&), BinaryTreeNode<T>* nodePtr) const
{
@ -115,6 +124,7 @@ void BinaryTree<T>::_postorder(void visit(const T&), BinaryTreeNode<T>* nodePtr)
}
}
// Prints tree using function pointer
template<class T>
void BinaryTree<T>::_printTree(void visit(const T&, int), BinaryTreeNode<T>* nodePtr, int level) const
{