Код в функции удаления работает для узлов с 1 дочерним узлом и покидает узлы, но когда я ввожу 12 (у узла 1 дочерний узел), этот узел все еще там, есть ли проблемы с функцией удаления:
void Delete(struct Node *current, int data){
struct Node *X;
if((current == NULL)
printf("Can not delete that node since the tree is empty");
else{
if(data > current->data)
Delete(current->rightchild, data);
else(data < current->data)
Delete(current->leftchild, data);
else{
X = current;
if(current->leftchild == NULL){
current = current->rightchild;
}
else(current->rightchild == NULL){
current = current->leftchild;
}
X = NULL;
}
}
int main(){
int tree[7] = {5, 4, 15, 3, 12, 20, 13};
struct Node *current;
int I = 0;
for(; I < 7; ++I){
Tree(tree[I]); // Tree is the tree-creating function
}
current = root;
printf("Entering the node u want to delete: ");
scanf("%d", &j);
Delete(current, j);
InOrder_Traversal(root); // this is the printing function
Я ожидаю, что выходные данные 3, 4, 5, 12, 13, 15, 20 будут 3, 4, 5, 13, 15, 20, но узел 12 все еще там, когда я ввожу 12.