мой код удаления для бинарного дерева поиска вызывает ошибку сегментации, и мне было интересно, в чем проблема.
Предзаказ: 64 8 4 32 16 128 512 256
и шаги выполняются
удаление 4
удаление 64
удаление 128
и это должно привести к предварительному заказу: 256 8 32 16 512
но я получаю предварительный заказ: 256 8 0 32 16 512 9502512
мой код ниже
bool IntBST::remove(int value){
Node* n = getNodeFor(value, root);
if(n == NULL){
return false;
}
else{
if((n->right == NULL) && (n->left == NULL)){
if(n->parent->left == n){
n->parent->left == NULL;
}
else{
n->parent->right == NULL;
}
delete n;
return true;
}
if(n->left && (n->right == NULL)){
n->parent->left = n->left;
n->left->parent = n->parent;
n->left =NULL;
delete n;
return true;
}
if(n->right && (n->left == NULL)){
n->parent->right = n->right;
n->right->parent = n->parent;
n->right =NULL;
delete n;
return true;
}
else{
Node* n2 = getSuccessorNode(n->info);
int temp = n2->info;
remove(n2->info);
n->info = temp;
delete n2;
return true;
}
}