#include <stdio.h>
#include <iostream>
using namespace std;
typedef struct BTNode
{
int data;
struct BTNode *lchild,*rchild;
} BiTNode,*BiTree;
int Create(BiTree &T)//创建树,0表示空树
{
int c;
scanf("%d",&c);
if (c == 0)
T = NULL;
else
{
T = new BiTNode;
T->data = c;
Create(T->lchild);
Create(T->rchild);
}
return 0;
}
void Visit(BiTree T)
{
if (T->data != 0)
printf("%d ",T->data);
}
void preorder(BiTree p)//先序
{
if (p != NULL)
{
Visit(p);
preorder(p->lchild);
preorder(p->rchild);
}
}
void inorder(BiTree p)//中序
{
if (p != NULL)
{
inorder(p->lchild);
Visit(p);
inorder(p->rchild);
}
}
void postorder(BiTree p)//后序
{
if (p != NULL)
{
postorder(p->lchild);
postorder(p->rchild);
Visit(p);
}
}
int main()
{
BiTree T;
cout <<"按先序遍历输入二叉树,0表示空节点" <<endl;
Create(T);
cout <<endl<<endl;
cout <<"先序结果:";
preorder(T);
cout<<endl;
cout <<"中序结果:";
inorder(T);
cout<<endl;
cout <<"后序结果:";
postorder(T);
cout<<endl;
}
更详细的请参考这里:http://blog.youkuaiyun.com/sjf0115/article/details/8645991