我正在尝试向树中添加新节点,但是每完成一次插入,根节点就会自动重置为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中也显示了根节点的新值。
为什么要输入char c
?当您的情况是整数时,请尝试使用int c
。另外,您正在使用%d
进行输入,因此它应该是整数