实现代码:(已通过VC++调试通过)
#include<stdio.h>
#include<stdlib.h>
typedef struct bnode
{
char data;
struct bnode *lchild,*rchild;
}Bnode,*BTree;
BTree CreatTree()
{//按先序创建二叉树
char ch;
BTree T;
ch=getchar();//输入节点
if(ch=='#')//用#代替空节点
T=NULL;
else
{
T=(BTree)malloc(sizeof(Bnode));
T->data=ch;
T->lchild=CreatTree();
T->rchild=CreatTree();
}
return T;
}
void PreOrder(BTree T)
{//先序遍历
if(T)
{
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BTree T)
{//中序遍历
if(T)
{
InOrder(T->lchild);
printf("%c",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BTree T)
{//后序遍历
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);
}
}
int main()
{
BTree T;
printf("先序创建二叉树:\n");
T=CreatTree();
printf("先序遍历的结果是:");
PreOrder(T);
printf("\n");
printf("中序遍历的结果是:");
InOrder(T);
printf("\n");
printf("后序遍历的结果是:");
PostOrder(T);
printf("\n");
return 0;
}