菜鸟#c语言数据结构#二叉树链表

如图,不知道为什么会出现这种情况,请大神指点
输入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;
}

scanf("&d",&data);
->
scanf("%d",&data);