二叉树中先序递归输入数据?

void Precreat(BTree bt)
{

char ch1[10];
scanf("%s",ch1);

if(strcmp(ch1,"$")==1)
{
return;
}
else
{
bt=(BTree
)malloc(sizeof(BTree));
if(strcmp(ch1,"@"))
{
bt=NULL;

}

strcpy(bt->name,ch1);
Precreat(bt->lchild);
Precreat(bt->rchild);

}

}
这样写有什么问题??
程序不会报错

中先序是什么鬼,中序还是先序,BTree是什么?指针类型?参数BTree bt,那么这里应该是BTree* bt,否则改变bt没有办法传到主程序