如图,不知道为什么会出现这种情况,请大神指点
输入0结束
#include<stdio.h>
#include<stdlib.h>
struct node
{
int key;
struct node *lchild;
struct node *rchild;
};
typedef struct node tnode;
typedef tnode *tree;
//
int insertbtree(tree bt,int data)
{
tree rnode,s,pre;
rnode=(tree)malloc(sizeof(tnode));
rnode->key=data;
rnode->lchild=NULL;
rnode->rchild=NULL;
if(bt==NULL)
{
bt=rnode;
return 1;
}
pre=NULL;
s=bt;
while(s)
{
if(data==s->key)
return 0;
else if(data<s->key)
{
pre=s;
s=s->lchild;
}
else
{
pre=s;
s=s->rchild;
}
}
if(data<pre->key)
{
pre->lchild=rnode;
}
else
pre->rchild=rnode;
return 1;
}
//建树
void createbtree(tree bt)
{
int data;
bt=NULL;
scanf("&d",&data);
do
{
insertbtree(bt,data);
scanf("%d",&data);
}
while(data!=0);
}
//先序
void preorder (tree bt)
{
if(bt!=NULL)
{
printf("[%d]",bt->key);
preorder(bt->rchild);
preorder(bt->lchild);
}
}
int main()
{
tree bt;
createbtree(bt);
preorder(bt);
return 0;
}