Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote