//创建-输入-打印-递归
# include<stdio.h>
# include<stdlib.h>
# include<malloc.h>
typedef struct Node{
char data;
struct Node *Lchild;
struct Node *Rchild;
}BiTNode,*BiTree;
BiTree CreateBiTree(BiTree bt)
{
char data;int flag=1;
while(flag)
{
scanf("%c",&data);
if(data!='$')
{
bt=(BiTNode *)malloc(sizeof(BiTNode));
bt->data=data;
bt-Rchild=(BiTNode *)malloc(sizeof(bt-Rchild));
bt->Rchild=CreateBiTree(bt->Rchild); //为啥建立完右孩子之后就return了呢?
bt-Lchild=(BiTNode *)malloc(sizeof(bt-Lchild));
bt->Lchild=CreateBiTree(bt->Lchild);//为啥return后才建立左孩子呢?
}
else {flag=0;}
}
return bt;
}
void Visit(BiTree bt)
{
while(bt->data!='$')
printf("%c,",bt->data);
}
void PreOrder(BiTree bt)
{
if(bt!=NULL)
{
Visit(bt);
PreOrder(bt->Lchild);//全部遍历
PreOrder(bt->Rchild);//全部遍历
}
}
int main()
{
BiTNode *bt;
CreateBiTree(bt);
PreOrder(bt);
getch();
}
bt-Rchild=(BiTNode *)malloc(sizeof(bt-Rchild));
你有的没有写指针的访问符!
bt->Rchild