private: Node* m_left; Node

Report 4 Downloads 144 Views
Node.h #ifndef NODE_HEADER #define NODE_HEADER template class Node { private: Node* m_left; Node* m_right; T m_value; public: Node(); /*{ m_left=nullptr; m_right=nullptr; }*/ T getValue(){return this->m_value;} Node* getLeft(){return this->m_left;} Node* getRight(){return this->m_right;} void setValue(T value); void setLeft(Node* left); void setRight(Node* right); }; #include"Node.hpp" #endif

Node.hpp template Node::Node() { m_left=nullptr; m_right=nullptr; }

template void Node::setValue(T value) { m_value=value; } template void Node::setLeft(Node* left) { m_left=left; } template void Node::setRight(Node* right) { m_right=right;

}

BinarySearchTree.h #ifndef BST_H #define BST_H #include "Node.h" using namespace std; template class BinarySearchTree { private: Node* m_root; void add(T value,Node* subTree) { if(value<subTree->getValue()) { if(subTree->getLeft()!=nullptr) add(value,subTree->getLeft()); else { subTree->setLeft(new Node); subTree->getLeft()->setValue(value); subTree->getLeft()->setLeft(nullptr); subTree->getLeft()->setRight(nullptr); } } else if(value>=subTree->getValue()) { if(subTree->getRight()!=nullptr) add(value,subTree->getRight()); else { subTree->setRight(new Node); subTree->getRight()->setValue(value); subTree->getRight()->setLeft(nullptr); subTree->getRight()->setRight(nullptr); } } } void deleteTree(Node* subTree) { if(subTree!=nullptr) { deleteTree(subTree->getLeft()); deleteTree(subTree->getRight()); delete subTree; } } void printTree(Node* subtree) { if(subtree!=nullptr)

{ coutgetValue()getRight()); } } void sortedPrint(Node* subtree) { if(subtree!=nullptr) { if(subtree->getLeft()!=nullptr) sortedPrint(subtree->getLeft()); coutgetValue()getRight()); } } Node* search(T value,Node* subtree) { if(subtree!=nullptr) { if(value==subtree->getValue()) return subtree; if(value<subtree->getValue()) return search(value,subtree->getLeft()); else return search(value,subtree->getRight()); } else return NULL; } public: BinarySearchTree(); ~BinarySearchTree(); void add(T value); void printTree(); void sortedPrint(); Node* search(T value); };

#include"BinarySearchTree.hpp" #endif

BinarySearchTree.hpp #include #include"Node.h" using namespace std; template BinarySearchTree::BinarySearchTree() { m_root=nullptr;

} template BinarySearchTree::~BinarySearchTree() { //Calls private method, deleteTree(Node* subTree) and passes in m_root as the starting point for deletion } } template void BinarySearchTree::add(T value) { if(m_root==nullptr) { Node* t=new Node; m_root=t; t->setValue(value); } else { add(value,m_root); } } template void BinarySearchTree::printTree() { if(m_root==nullptr) { cout