Above is my function to delete a node from a tree,Code:void tree1::remove(int coX, int coY) { //Locate the element bool found = false; if(isEmpty()) { cout<<" This Tree is empty! "<<endl; return; } tree_node* curr; tree_node* parent; curr = root; while(curr != NULL) { if(curr->x == coX && curr->y == coY) { found = true; break; } else { parent = curr; if(coX>curr->x) curr = curr->right; else curr = curr->left; } } if(!found) { cout<<" Data not found! "<<endl; return; } // 3 cases : // 1. We're removing a leaf node // 2. We're removing a node with a single child // 3. we're removing a node with 2 children // Node with single child if((curr->left == NULL && curr->right != NULL)|| (curr->left != NULL && curr->right == NULL)) { if(curr->left == NULL && curr->right != NULL) { if(parent->left == curr) { parent->left = curr->right; delete curr; } else { parent->right = curr->right; delete curr; } } else // left child present, no right child { if(parent->left == curr) { parent->left = curr->left; delete curr; } else { parent->right = curr->left; delete curr; } } return; } //We're looking at a leaf node if( curr->left == NULL && curr->right == NULL) { if(parent->left == curr) parent->left = NULL; else parent->right = NULL; delete curr; return; } //Node with 2 children // replace node with smallest value in right subtree if (curr->left != NULL && curr->right != NULL) { tree_node* chkr; chkr = curr->right; if((chkr->left == NULL) && (chkr->right == NULL)) { curr = chkr; delete chkr; curr->right = NULL; } else // right child has children { //if the node's right child has a left child // Move all the way down left to locate smallest element if((curr->right)->left != NULL) { tree_node* lcurr; tree_node* lcurrp; lcurrp = curr->right; lcurr = (curr->right)->left; while(lcurr->left != NULL) { lcurrp = lcurr; lcurr = lcurr->left; } curr->x = lcurr->x; curr->y = lcurr->y; delete lcurr; lcurrp->left = NULL; } else { tree_node* tmp; tmp = curr->right; curr->x = tmp->x; curr->y = tmp->y; curr->right = tmp->right; delete tmp; } } return; } }

when I run it in Visual Studio I get this error, Run-Time Check Failure #3 - The variable 'parent' is being used without being initialized.

I been looking at the code and I dont see anything wrong.

Can some please help me out?

EDIT:

I think the issue is when the node to be removed is a root node and it doesnt have any children.

Hopefully this will be useful

EDIT:

I solved the issue