关于二叉树创建与遍历的问题
想请问各路高手,我创建了一个二叉树输入字符的时候没有问题,但是当输入完成后要进行先序,中序,后序遍历时都在报错,请问我的算法有什么地方需要改进的麻烦指出~~~本人虚心请教


//L=(Linklist)malloc(sizeof(Btree)); //這行不需要,否則輸入#時 内存瀉漏。
還有ls提到的 printf("%s",L->data); // 这里是%c,
#include <stdio.h>
#include <stdlib.h>
typedef struct Btree
{
char data;
struct Btree *lchild,*rchild;
}Btree,*Linklist;
Linklist Create_btree()
{
Linklist L;
char n[16];
printf("请输入一个值,输入#为结束:\n");
scanf("%s",n);
//L=(Linklist)malloc(sizeof(Btree));
if(n[0]=='#')
{L=NULL;}
else
{
if(!(L=(Linklist)malloc(sizeof(Btree))))
exit(0);
L->data=n[0];
L->lchild=Create_btree();
L->rchild=Create_btree();
}
return L;
}
void Preorder(Linklist L)
{
if(L==NULL)return;
printf("%c",L->data);
Preorder(L->lchild);
Preorder(L->rchild);
}
void Inorder(Linklist L)
{
if(L==NULL)return;
Inorder(L->lchild);
printf("%c",L->data);
Inorder(L->rchild);
}
void Laorder(Linklist L)
{
if(L==NULL)return;
Laorder(L->lchild);
Laorder(L->rchild);
printf("%c",L->data);
}
int main(void)
{
int x;
Linklist L;
L=(Linklist)malloc(sizeof(Btree));
do{
printf("1...建立二叉树\n");
printf("2...先序遍历\n");
printf("3...中序遍历\n");
printf("4...后序遍历\n");
printf("0...结束\n");
scanf("%d",&x);
switch(x){
case 1:
L=Create_btree();
break;
case 2:
Preorder(L);
printf("\n");
break;
case 3:
Inorder(L);
printf("\n");
break;
case 4:
Laorder(L);
printf("\n");
break;
default :
printf("The End\n");
break;
}
}while(x!=0 && x<=4);
return 0;
}