Question: C++: I need help with writing the code for 3 methods. 1). void setEntry(const KeyType& aKey, const ItemType& item) const throw(NotFoundException, InvalidSetEntryRequest); and 2). BinarySearchTree&
C++:
I need help with writing the code for 3 methods.
1). void setEntry(const KeyType& aKey, const ItemType& item) const throw(NotFoundException, InvalidSetEntryRequest);
and
2). BinarySearchTree& operator=(const BinarySearchTree& rightHandSide);
and
3). BinarySearchTree(const BinarySearchTree& tree);
Here is my code:
BST.cpp
#include "BinarySearchTree.h"
//------------------------------------------------------------
// Protected Utility Methods Section:
// Recursive helper methods for the public methods.
//------------------------------------------------------------
template
BinaryNode
BinaryNode
{
if (subTreePtr == NULL)
{
return newNode;
}
else
{
if (newNode->getItem() > subTreePtr->getItem())
{
BinaryNode
subTreePtr->setRightChildPtr(tempPtr);
}
else
{
BinaryNode
subTreePtr->setLeftChildPtr(tempPtr);
}
return subTreePtr;
}
}
template
BinaryNode
KeyType aKey, bool& success)
{
if (subTreePtr == NULL)
{
success = false;
return NULL;
}
else if (subTreePtr->getItem() == aKey)
{
subTreePtr = removeNode(subTreePtr);
success = true;
return subTreePtr;
}
else
{
if (subTreePtr->getItem() > aKey)
{
BinaryNode
subTreePtr->setLeftChildPtr(tempPtr);
}
else
{
BinaryNode
subTreePtr->setRightChildPtr(tempPtr);
}
return subTreePtr;
}
}
template
BinaryNode
{
if (nodePtr->isLeaf() == true)
{
delete nodePtr;
nodePtr = NULL;
return (nodePtr);
}
//else if (nodePtr->getLeftChildPtr() == NULL)
//{
//BinaryNode
//delete nodePtr;
//nodePtr = NULL;
//return nodeToConnectPtr;
//}
//else if (nodePtr->getRightChildPtr() == NULL)
//{
// BinaryNode
// delete nodePtr;
// nodePtr = NULL;
// return nodeToConnectPtr;
//}
//else
//{
// ItemType newNodeValue;
// nodePtr->setRightChildPtr(removeLeftmostNode(nodePtr->getRightChildPtr(), newNodeValue));
// nodePtr->setItem(newNodeValue);
// return nodePtr;
// }
else if ((nodePtr->getLeftChildPtr() == NULL && nodePtr->getRightChildPtr() != NULL) || (nodePtr->getRightChildPtr() == NULL && nodePtr->getLeftChildPtr() != NULL))
{
BinaryNode
if (nodePtr->getLeftChildPtr() != NULL)
{
nodeToConnectPtr = nodePtr->getLeftChildPtr();
}
else
{
nodeToConnectPtr = nodePtr->getRightChildPtr();
}
delete nodePtr;
nodePtr = NULL;
return nodeToConnectPtr;
}
else
{
ItemType newNodeValue;
BinaryNode
nodePtr->setRightChildPtr(tempPtr);
nodePtr->setItem(newNodeValue);
}
}
template
BinaryNode
ItemType& inorderSuccessor)
{
if (subTreePtr->getLeftChildPtr() == NULL)
{
inorderSuccessor = subTreePtr->getItem();
return removeNode(subTreePtr);
}
else
{
subTreePtr->setLeftChildPtr(removeLeftmostNode(subTreePtr->getLeftChildPtr(), inorderSuccessor));
return subTreePtr;
}
}
template
BinaryNode
KeyType aKey) const
{
if (treePtr == NULL)
{
return NULL;
}
else if (treePtr->getItem() == aKey)
{
return treePtr;
}
else if (treePtr->getItem() > aKey)
{
return findNode(treePtr->getLeftChildPtr(), aKey);
}
else
{
return findNode(treePtr->getRightChildPtr(), aKey);
}
}
template
void BinarySearchTree
{
if (treePtr != NULL)
{
ItemType theItem = treePtr->getItem();
visit(theItem);
preorder(visit, treePtr->getLeftChildPtr());
preorder(visit, treePtr->getRightChildPtr());
}
}
template
void BinarySearchTree
{
if (treePtr != NULL)
{
inorder(visit, treePtr->getLeftChildPtr());
ItemType theItem = treePtr->getItem();
visit(theItem);
inorder(visit, treePtr->getRightChildPtr());
}
}
template
void BinarySearchTree
{
if (treePtr != NULL)
{
postorder(visit, treePtr->getLeftChildPtr());
postorder(visit, treePtr->getRightChildPtr());
ItemType theItem = treePtr->getItem();
visit(theItem);
}
}
//------------------------------------------------------------
// Constructor and Destructor Section.
//------------------------------------------------------------
template
BinarySearchTree
{
rootPtr = NULL;
}
template
BinarySearchTree
{
rootPtr = new BinaryNode
}
template
BinarySearchTree
{
}
template
BinarySearchTree
{
clear();
}
//------------------------------------------------------------
// Public Methods Section.
//------------------------------------------------------------
template
bool BinarySearchTree
{
return rootPtr == NULL;
}
template
int BinarySearchTree
{
if (rootPtr == NULL)
{
return 0;
}
else
{
return 1 + max(getHeight(rootPtr->getLeftChildPtr()), getHeight(rootPtr->getRightChildPtr()));
}
}
template
int BinarySearchTree
{
if (rootPtr == NULL)
{
return 0;
}
else
{
return 1 + getNumberOfNodes(rootPtr->getLeftChildPtr()) + getNumberOfNodesHelper(rootPtr->getRightChildPtr());
}
}
template
bool BinarySearchTree
{
BinaryNode
rootPtr = insertInorder(rootPtr, newNodePtr);
return true;
}
template
bool BinarySearchTree
{
bool isSuccessful = false;
rootPtr = removeValue(rootPtr, aKey, isSuccessful);
return isSuccessful;
}
template
ItemType BinarySearchTree
{
BinaryNode
if (nodeWithEntry == NULL)
{
throw NotFoundException("Entry not found in tree.");
}
else
{
return nodeWithEntry->getItem();
}
}
template
void BinarySearchTree
{
if (add(item) == true)
{
BinaryNode
rootPtr = inorderInsertion(rootPtr, newNodePtr);
}
else
{
throw NotFoundException("Can not add to tree."), InvalidSetEntryRequest("Invalud set Entry Request.")
}
}
template
bool BinarySearchTree
{
if (findNode(rootPtr, aKey) != NULL)
{
return true;
}
else
{
return false;
}
}
template
void BinarySearchTree
{
if (rootPtr != NULL)
{
clear(rootPtr->leftChildPtr);
clear(rootPtr->rightChildPtr);
delete rootPtr;
if (rootPtr->leftChildPtr != NULL)
{
rootPtr->leftChildPtr = NULL;
}
if (rootPtr->rightChildPtr != NULL)
{
rootPtr->rightChildPtr = NULL;
}
rootPtr = NULL;
}
}
//------------------------------------------------------------
// Public Traversals Section.
//------------------------------------------------------------
template
void BinarySearchTree
{
preorder(visit, rootPtr);
}
template
void BinarySearchTree
{
inorder(visit, rootPtr);
}
template
void BinarySearchTree
{
postorder(visit, rootPtr);
}
//------------------------------------------------------------
// Overloaded Operator Section.
//------------------------------------------------------------
template
BinarySearchTree
{
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
