#include <iostream>
#include<stdlib.h>
using namespace std;
typedef struct BiTNode
{
char data;
BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree &T)
{
char data;
cin>>data;
if(data=='#')
{
T=NULL;
}
else
{T=(BiTree)malloc(sizeof(BiTNode));
T->data=data;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 0;
}
//输出
void Visit(BiTree T)
{
if(T->data!='#')
{
cout<<T->data<<" ";
}
}
//先序遍历二叉树
void PreTraverse(BiTree T)
{
if(T!=NULL)
{
Visit(T);
PreTraverse(T->lchild);
PreTraverse(T->rchild);
}
}
//中序遍历
void InTraverse(BiTree T)
{
if(T!=NULL)
{
InTraverse(T->lchild);
Visit(T);
InTraverse(T->rchild);
}
}
//后序遍历
void PostTraverse(BiTree T)
{
if(T!=NULL)
{
PostTraverse(T->lchild);
PostTraverse(T->rchild);
Visit(T);
}
}
int main()
{
BiTree T;
CreateBiTree(T);
PreTraverse(T);
cout<<endl;
InTraverse(T);
cout<<endl;
PostTraverse(T);
system("pause");
/*ABCDEFG
CBEGDFA
CGEFDBA*/
return 0;
}