Я не очень понимаю протокол, используемый для удаления здесь.Похоже, у вас нет двоичного дерева поиска (без упорядочения в дереве).
Но просто сделать код простым.Вы можете сделать что-то вроде этого:
bool b1 = (current->left == NULL);
bool b2 = (current->right == NULL);
bool b3 = (current->key > prev->key);
int decision_case = b1 * 4 + b2 * 2 + b3;
switch(decision_case) {
case 0: // fill in code here
break;
...
...
case 7: // fill in code here
break;
}
Кроме того, вы должны использовать delete , чтобы избежать утечек памяти.Надеюсь, это поможет.