**#题目描述:从键盘接收扩展先序序列,以二叉链表作为存储结构,建立二叉树。输出这棵二叉树的先序、中序和后序遍历序列。二叉树结点的data是字符类型数据, 其中#表示空格字符。
##样例输入:
ABC##DE#G##F###
##样例输出:
ABCDEGF
CBEGDFA
CGEFDBA
#include<stdio.h>
#include<stdlib.h>
//定义节点
typedef struct node{
char data;
struct node *Lc;
struct node *Rc;
}BeTree;
//以扩展的序列创建二叉树
BeTree *CreatTree(BeTree *root)
{
char ch;
ch=getchar();
if(ch=='#')
root=NULL;
else
{
root=(BeTree *)malloc(sizeof(BeTree));
root->data=ch;
root->LC=CreatTree(root->Lc);
root->Rc=CreatTree(root->Rc);
}
return root;
}
//先序遍历
void PreOrder(BeTree *B)
{
if(B)
{
printf("%c",B->data);
PreOrder(B->Lc);
PreOrder(B->Rc);
}
}
//中序遍历
void MidOrder(BeTree *B)
{
if(B)
{
MidOrder(B->Lc);
printf("%c",B->data);
MidOrder(B->Rc);
}
}
//后序遍历
void PostOrder(BeTree *B)
{
if(B)
{
PostOrder(B->Lc);
PostOrder(B->Rc);
printf("%c",B->data);
}
}
int main()
{
BeTree *T;
T=CreatTree(T);
PreOrder()
printf("\n");
MidOrder(T);
printf("\n");
PostOrder(T);
}