生成一个二叉树(如图),再先序遍历、中序遍历、后序遍历该二叉树。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef char TElemType;
typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//初始化
void InitList(BiTree *l)
{
*l=(BiTree)malloc(sizeof(BiTree));
(*l)->lchild=NULL;
(*l)->rchild=NULL;
}
//用先序遍历生成一颗树
void CreateBiTree(BiTree *x)
{
char ch;
ch=getchar();
if(ch==' ') *x=NULL;
else
{
*x=(BiTree)malloc(sizeof(BiTNode));
(*x)->data=ch;
CreateBiTree(&((*x)->lchild));
CreateBiTree(&((*x)->rchild));
}
}
//先序遍历该树
void PreOrder(BiTree bt)
{
if(bt!=NULL)
{
printf("%c ",bt->data);
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
//中序遍历该二叉树
void MidOrder(BiTree bt)
{
if(bt!=NULL)
{
MidOrder(bt->lchild);
printf("%c ",bt->data);
MidOrder(bt->rchild);
}
}
//后序遍历该二叉树
void PostOrder(BiTree bt)
{
if(bt!=NULL)
{
PostOrder(bt->lchild);
PostOrder(bt->rchild);
printf("%c ",bt->data);
}
}
void main()
{
BiTree root;
InitList(&root);
CreateBiTree(&root);
printf("先序遍历该二叉树:");
PreOrder(root);
printf("\n");
printf("中序遍历该二叉树:");
MidOrder(root);
printf("\n");
printf("后序遍历该二叉树:");
PostOrder(root);
printf("\n");
}