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;
}
}
}
如果我尝试删除任何节点,则说节点50而不是删除它只是根据我收到的输出将其设为0。 删除50之前 顺序:-
20 30 40 50 60 70 80
删除50后 顺序:-
20 30 40 0 60 70 80