У меня проблема с удалением узла в древовидных структурах данных в C - PullRequest
1 голос
/ 21 апреля 2019

Код в функции удаления работает для узлов с 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...