根节点在插入时自动重置为null

问题描述 投票:0回答:1

我正在尝试向树中添加新节点,但是每完成一次插入,根节点就会自动重置为null,最后我的树为空。我正在尝试构建BST。我的主要功能:

int main()
{
    char c;
    int item;
    struct BSTNode *root=NULL;
    while(1)
    {
        printf("\n1 Insert an element ");
        printf("\n2 Delete an element");
        printf("\n3 InOrder Traversal");
        printf("\nEnter your choice: ");
        scanf("%d", &c);
        switch(c)
        {
            case 1:
                printf("\nEnter the item:");
                scanf("%d", &item);
                if(root){printf("Root data before: %d",root->data); }  //Print statement -1
                root = insert(root,item);                
                printf("Root data after: %d",root->data); //Print statement-2
                break;

            case 2:
                printf("\nEnter the info to be deleted:");
                scanf("%d", &item);
                root = delete(root, item);
                break;

            case 3:
                InOrder(root);
                break;

            default:
                printf("Enter a valid choice: ");
        }
    }
return 0;
}

和我的插入函数看起来像:

 struct BSTNode* insert(struct BSTNode *root, int data)
 {
     if(root==NULL)
     {
        root=create(data);
     }
     if(data<root->data)
        root->left=insert(root->left,data);
     if(data>root->data)
        root->right=insert(root->right,data);
     return root;
 }

在我的主要功能中,有两个打印语句。在这种情况下,语句2正在打印根节点的数据,但是当我再次添加新节点时,语句1不会打印根节点的数据。并且在语句2中也显示了根节点的新值。

c binary-search-tree
1个回答
0
投票

为什么要输入char c?当您的情况是整数时,请尝试使用int c。另外,您正在使用%d进行输入,因此它应该是整数

© www.soinside.com 2019 - 2024. All rights reserved.