#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct BTNode
{
char data;
struct BTNode *lchild;
struct BTNode *rchild;
} BTNode;
void Visit(BTNode *p)
{
cout<<p->data<<" ";
}
//前序遍历
void preorder(BTNode *p)
{
if(p!=NULL)
{
Visit(p);
preorder(p->lchild);
preorder(p->rchild);
}
}
//中序遍历
void inorder(BTNode *p)
{
if(p!=NULL)
{
inorder(p->lchild);
Visit(p);
inorder(p->rchild);
}
}
//后序遍历
void postorder(BTNode *p)
{
if(p!=NULL)
{
postorder(p->lchild);
postorder(p->rchild);
Visit(p);
}
}
int main()
{
BTNode *a;
a=(BTNode*)malloc(sizeof(BTNode));
a->data='a';
BTNode *b;
b=(BTNode*)malloc(sizeof(BTNode));
b->data='b';
BTNode *c;
c=(BTNode*)malloc(sizeof(BTNode));
c->data='c';
BTNode *d;
d=(BTNode*)malloc(sizeof(BTNode));
d->data='d';
BTNode *e;
e=(BTNode*)malloc(sizeof(BTNode));
e->data='e';
BTNode *f;
f=(BTNode*)malloc(sizeof(BTNode));
f->data='f';
a->lchild=b;
b->lchild=d;
a->rchild=c;
c->lchild=e;
c->rchild=f;
d->lchild=NULL;
d->rchild=NULL;
e->lchild=NULL;
e->rchild=NULL;
f->lchild=NULL;
f->rchild=NULL;
cout<<"BTree:"<<endl<<endl;
cout<<" a "<<endl;
cout<<" / \\ "<<endl;
cout<<" b c "<<endl;
cout<<" / / \\"<<endl;
cout<<" d e f"<<endl;
cout<<endl;
cout<<"preorder:"<<endl;
preorder(a);
cout<<endl<<endl;
cout<<"inorder:"<<endl;
inorder(a);
cout<<endl<<endl;
cout<<"postorder:"<<endl;
postorder(a);
cout<<endl<<endl;
}
运行结果: