#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode //建立树
{
char data;
struct BiTNode *lchild,*rchild;
}*BiTree;
void xian(BiTree T) //二叉树的先序遍历
{
if(T==NULL)return ; //当T为空则返回
else
{
printf("%c ",T->data); //输出T的data
xian(T->lchild); //递归法对T的左孩子进行xian函数
xian(T->rchild);
}
}
void zhong(BiTree T) //二叉树的中序遍历
{
if(T==NULL)return ;
else
{
zhong(T->lchild); //先对T的左孩子进行中序遍历函数进行遍历
printf("%c ",T->data); //输出T的值后
zhong(T->rchild); //再对右孩子进行函数运算
}
}
void hou(BiTree T)//后序遍历
{
if(T==NULL)return;
else
{
hou(T->lchild); //先对左孩子运算
hou(T->rchild); //再对右孩子运算
printf("%c ",T->data); //再输出T的data
}
}
void creat(BiTree *T)
{
char ch;
scanf("%c",&ch); //输入T的data
if(ch=='#') //让#代表虚结点
*T=NULL; //对T置空
else
{
*T=(BiTree )malloc(sizeof(BiTNode)); //给T分配空间
(*T)->data=ch;
creat(&(*T)->lchild); //递归创造左孩子
creat(&(*T)->rchild);
}
}
int main()
{
BiTree T;
printf("please input:");
creat(&T);
printf("先序为:");
xian(T);
printf("中序为:");
zhong(T);
printf("后序为:");
hou(T);
return 0;
}
示例: