void Delete(Node* &root,int data){
if(root == NULL)
return;
if(root -> key > data)
Delete(root->left,data);
else if(root -> key < data)
Delete(root->right,data);
else{
// key found ;
if(root-> left == NULL && root->right ==NULL)
{
delete(root);
return;
}
else if(root -> left != NULL && root->right == NULL){
root -> key = root-> left->key;
delete(root -> left);
return;
}
else if(root -> left == NULL && root->right !=NULL){
root->key = root ->right->key;
delete(root -> right);
return;
}
else{
Node* temp = root->right;
while(temp -> left != NULL)
temp = temp -> left;
int key = temp -> key;
delete(temp);
Delete(root,key);
root -> key = key;
return;
}
}
}
If I try to delete any node say node with value 50 instead of deleting it is just making it 0 based on the output I receive. Before deleting 50 inorder:-
20 30 40 50 60 70 80
After deleting 50 inorder:-
20 30 40 0 60 70 80