递归方法:
#include<iostream>
using namespace std;
#define NULL 0
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{
char ch;
ch=getchar();
if(ch=='#')T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void PreOrder(BiTree T)
{
if(T)
{
cout<<T->data;
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T)
{
if(T)
{
InOrder(T->lchild);
cout<<T->data;
InOrder(T->rchild);
}
}
void PostOrder(BiTree T)
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
cout<<T->data;
}
}
int main()
{
cout<<"扩展二叉树先序输入: "<<endl;
BiTree T;
CreateBiTree(T);
cout<<"先序遍历: "<<endl;
PreOrder(T);
cout<<endl;
cout<<"中序遍历: "<<endl;
InOrder(T);
cout<<endl;
cout<<"后序遍历: "<<endl;
PostOrder(T);
cout<<endl;
return 0;
}