【发布时间】:2019-11-14 03:59:24
【问题描述】:
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
【问题讨论】:
标签: algorithm tree binary-tree binary-search-tree