#include <stdio.h>
#include <stdlib.h>
#define OVERFLOW -1
#define Status int
#define OK 1
typedef struct BiTNode {
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先序遍历
void PreOrder(BiTree BT){
if(BT!=NULL){
printf("%c",BT->data);
PreOrder(BT->lchild);
PreOrder(BT->rchild);
}
}
//中序遍历
void InOrder(BiTree BT){
if(BT!=NULL){
InOrder(BT->lchild);
printf("%c",BT->data);
InOrder(BT->rchild);
}
}
//后序遍历
void PostOrder(BiTree BT){
if(BT!=NULL){
PostOrder(BT->lchild);
PostOrder(BT->rchild);
printf("%c",BT->data);
}
}
Status CreateBiTree(BiTree &BT){
char ch;
scanf("%c",&ch);
if(ch=='#')
BT=NULL;
else{
if(!(BT=(BiTree)malloc(sizeof(BiTNode))))exit(OVERFLOW);
BT->data=ch;
CreateBiTree(BT->lchild);
CreateBiTree(BT->rchild);
}
return OK;
}
int main(){
BiTree tree;
printf("请输入二叉树:\n");
CreateBiTree(tree);
printf("先序遍历\n");
PreOrder(tree);
printf("中序遍历\n");
InOrder(tree);
printf("后序遍历\n");
PostOrder(tree);
return 0;
}