用c实现如下的二叉树
#include "stdio.h"
#include "malloc.h"
struct btree
{
char data;
struct btree *lp;
struct btree *rp;
};
struct btree * init();
void pretraverse(struct btree *);
void intraverse(struct btree *);
void postraverse(struct btree *);
int main()
{
struct btree * p=init();
printf("前序遍历的结果为:\n");
pretraverse(p);
printf("中序遍历的结果为:\n");
intraverse(p);
printf("后序遍历的结果为:\n");
postraverse(p);
return 0;
}
struct btree * init()
{
struct btree *a=(struct btree *)malloc(sizeof(struct btree));
struct btree *b=(struct btree *)malloc(sizeof(struct btree));
struct btree *c=(struct btree *)malloc(sizeof(struct btree));
struct btree *d=(struct btree *)malloc(sizeof(struct btree));
struct btree *e=(struct btree *)malloc(sizeof(struct btree));
a->data='a';
b->data='b';
c->data='c';
d->data='d';
e->data='e';
a->lp=b;
b->lp=NULL;
b->rp=NULL;
a->rp=c;
c->lp=d;
d->lp=NULL;
d->rp=NULL;
c->rp=e;
e->lp=NULL;
e->rp=NULL;
return a;
}
void pretraverse(struct btree *p)
{
printf("%c\t",p->data);
if(NULL!=p->lp)
{
pretraverse(p->lp);
}
if(NULL!=p->rp)
{
pretraverse(p->rp);
}
}
void intraverse(struct btree *p)
{
if(NULL!=p->lp)
{
intraverse(p->lp);
}
printf("%c\t",p->data);
if(NULL!=p->rp)
{
intraverse(p->rp);
}
}
void postraverse(struct btree *p)
{
if(NULL!=p->lp)
{
postraverse(p->lp);
}
if(NULL!=p->rp)
{
postraverse(p->rp);
}
printf("%c\t",p->data);
}