Untitled
unknown
plain_text
3 years ago
1.0 kB
9
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...