#include<stdio.h>
#include<stdlib.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T)
{
ElemType ch;
scanf("%c",&ch);
if(ch == '#')
*T = NULL;
else
{
//别忘了分配内存
*T = (BiTree)malloc(sizeof(BiTNode));
if(!*T)
{
exit(1);
}
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
//前序
void PreOrderBiTree(BiTree T)
{
if(T == NULL)
return;
else
{
printf("%c",T->data);
PreOrderBiTree(T->lchild);
PreOrderBiTree(T->rchild);
}
}
//中序
void InOrderBiTree(BiTree T)
{
if(T == NULL)
return;
else
{
InOrderBiTree(T->lchild);
printf("%c",T->data);
InOrderBiTree(T->rchild);
}
}
//后序
void PostOrderBiTree(BiTree T)
{
if(T == NULL)
return;
else
{
PostOrderBiTree(T->lchild);
PostOrderBiTree(T->rchild);
printf("%c",T->data);
}
}
int main()
{
BiTree T = NULL;
CreateBiTree(&T);
/*
C
A D
B E
先序输入:CAB###D#E##
中序打印:BACDE
后序打印:BAEDC
*/
printf("前序打印:\n");
PreOrderBiTree(T);
printf("\n中序打印:\n");
InOrderBiTree(T);
printf("\n后序打印:\n");
PostOrderBiTree(T);
return 0;
}
运行这个程序,输入:CAB###D#E##
运行结果:
前序打印:
CABDE
中序打印:
BACDE
后序打印:
BAEDC
可以看到结果与我们程序中写出的排序结果一致,二叉树创建并且打印成功。