Untitled
Anonymous
plain_text
12/15/2022 9:55 AM
1.4 KB
17
Indexable
void BST::remove(int a){
node* del = search(a);
if(del->left != NULL && del->right != NULL){
node* delReplacement = search(successor(a));
int replacement = delReplacement->item;
delReplacement->item = del->item;
del->item = replacement;
remove(replacement);
}else{
if(del->right != NULL){
node* parent = del->parent;
if(parent->left = del){
parent->left = del->right;
del->right->parent = parent;
}else if(parent -> right = del){
parent->right = del->right;
del->right->parent = parent;
}
}else if(del->left != NULL){
node* parent = del->parent;
if(parent->left = del){
parent->left = del->left;
del->right->parent = parent;
}else if(parent -> right = del){
parent->right = del->left;
del->right->parent = parent;
}
}
delete del;
}
}Editor is loading...