#include<stdio.h>
#include<stdlib.h>
#define DataType char
typedef struct BiTNode{ //二叉链表的结构类型
DataType data; //数据域
struct BiTNode *lchild,*rchild; //二叉链表的指针域
}BiTNode,*BiTree;
BiTree CreateBiTree(){ //先序建立二叉树
char ch; //声明二叉树里面的数据类型
BiTree T; //定义一个二叉树
scanf("%c",&ch); //输入数据
if(ch==' ')T=NULL;
else{
T=(BiTree)malloc(sizeof(BiTNode)); //开辟存储空间
T->data = ch; //输入数据
T->lchild = CreateBiTree(); //左指针指向左边分叉子树
T->rchild = CreateBiTree(); //右指针指向右边分叉子树
}
return T; //创建成功 返回根节点存储位置
}
void PreOrderTraverse(BiTree T){ //先序遍历二叉树,递归函数
if(T){
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
void InOrderTraverse(BiTree T){ //中序遍历二叉树,递归函数
if(T){
InOrderTraverse(T->lchild);
printf("%c",T->data);
InOrderTraverse(T->rchild);
}
}
void PostOrderTraverse(BiTree T){ //后序遍历二叉树,递归函数
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",T->data);
}
}
int main(){
BiTree T;
printf("先序输入二叉树:\n");
T = CreateBiTree(); //先序创建二叉树
printf("先序遍历输出二叉树:\n");
PreOrderTraverse(T); //先序遍历输出二叉树
printf("\n");
printf("中序遍历输出二叉树:\n");
InOrderTraverse(T); //中序遍历输出二叉树
printf("\n");
printf("后序遍历输出二叉树:\n");
PostOrderTraverse(T); //后序遍历输出二叉树
printf("\n");
system("pause"); //防止运行后闪退,相当于按住暂停键
}