This function seem to give me errors. I dont know how to solve it. Someone pleas
ID: 3867234 • Letter: T
Question
This function seem to give me errors. I dont know how to solve it. Someone please help
AND also how do you combine a findminVAlue into the deleteFrom void function together. So instead of 2 separate funciton, i want to implement findminvalue into deletefrom function.
void Tree::deleteFrom(TreeNode* startintPoint, int value){
if(NULL == startintPoint){
return;
}
else {
if(value < startintPoint->value){
parentNode = startintPoint;
leftOrRight = 0;
deleteFrom(startintPoint->left, value);
}
else if(value > startintPoint->value){
parentNode = startintPoint;
leftOrRight = 1;
deleteFrom(startintPoint->right, value);
}
else{
if(startintPoint->left == NULL && startintPoint->right != NULL){
TreeNode* temp1 = startintPoint;
parentNode->right = startintPoint->right;
delete temp1;
temp1 = NULL;
}
else if(startintPoint->right == NULL && startintPoint->left != NULL){
TreeNode* temp1 = startintPoint;
parentNode->left = startintPoint->right;
delete temp1;
temp1 = NULL;
}
else if(startintPoint->left != NULL && startintPoint->right != NULL){
TreeNode* temp3 = startintPoint->left;
while(temp3->right != NULL){
temp3 = temp3->right;
}
startintPoint->value = temp3->value;
deleteFrom(startintPoint->left, temp3->value);
}
else {
if(leftOrRight == 0){
parentNode->left = NULL;
}
if(leftOrRight == 1){
parentNode->right = NULL;
}
}
}
}
TreeNode* Tree::findMinValue(TreeNode* startingPoint)
{
TreeNode* current = startingPoint;
while (current->left != NULL)
{
current = current->left;
}
return current;
Explanation / Answer
void Tree::deleteFrom(TreeNode* startintPoint, int value, TreeNode** minValue)
{
//from example in class, deleting a node
if (startintPoint == nullptr)
{
return;
}
else if (startintPoint->left != nullptr && value < startintPoint->value)
{
deleteFrom(startintPoint->left, value);
}
else if (startintPoint->right != nullptr && value > startintPoint->value)
{
deleteFrom(startintPoint->right, value);
}
else
{
if (startintPoint->left == nullptr && startintPoint->right == nullptr)
{
delete startintPoint;
startintPoint = nullptr;
}
else if (startintPoint->left == nullptr)
{
TreeNode* temp = startintPoint;
startintPoint = startintPoint->right;
delete temp;
}
else if (startintPoint->right == nullptr)
{
TreeNode* temp = startintPoint;
startintPoint = startintPoint->left;
delete temp;
}
else
{
TreeNode* temp = current(startintPoint->right);
startintPoint->value = temp->value;
deleteFrom(startintPoint->right, temp->value);
}
//After deleting a value, updating findMinValue
TreeNode* temp = startintPoint;
while (temp->left != NULL)
{
temp = temp->left;
}
*minValue = temp; //update min value to the minvalue
}
}
Before calling this function:
Declaration => TreeNode* minValue = nullptr;
Function call => deleteFrom(root, 10, &minValue); //You should call the function by sending the address of minValue
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.