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

Can someone tell me what am i doing wrong for this deleteFrom funciton. My task

ID: 3867239 • Letter: C

Question

Can someone tell me what am i doing wrong for this deleteFrom funciton. My task was to implement this and use in the delete function. This funciton should Deletes the node with the value specified in the below function.
Also how do i combine the findminvalue into deleteFrom function. I have implement the findminvalue function below.

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