求助,写了一个很短的二叉树算法,可是错误频出求大神帮忙
#include<stdio.h>#include<stdlib.h>
typedef struct BiNode //定义二叉树节点
{
char data;
struct BiNode *Lchild;
struct BiNode *Rchild;
}BiNode,*BiNodeptr;
void creatTree(BiNodeptr root) //先序方式创建二叉树
{
char ch;
printf("请输入");
ch=getchar();
fflush(stdin);
if(ch=='.')
root=NULL;
else
{
root=(BiNodeptr)malloc(sizeof(BiNode));
root->data=ch;
creatTree(root->Lchild);
creatTree(root->Rchild); //递归
}
}
void preorder(BiNodeptr root) //先序遍历打印数
{
if(root==NULL)
return;
printf("%c",root->data);
preorder(root->Lchild);
preorder(root->Rchild);
}
void inorder(BiNodeptr root) //中序遍历打印数
{
if(root==NULL)
return;
printf("%c",root->data);
inorder(root->Lchild);
inorder(root->Rchild);
}
int main()
{
BiNodeptr tree;
creatTree(tree);
printf("请选择: 1.先序遍历 2.中序遍历");
int i;
scanf("%d",&i);
if(i==1)
preorder(tree);
if(i==2)
inorder(tree);
return 0;
}