typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateTree(BiTree *T)
{
*T = (BiTNode *)malloc(sizeof(BiTNode));
(*T)->data = 1;
(*T)->lchild=(BiTNode *)malloc(sizeof(BiTNode));
(*T)->rchild=(BiTNode *)malloc(sizeof(BiTNode));
(*T)->lchild->data = 2;
(*T)->lchild->lchild =(BiTNode*)malloc(sizeof(BiTNode));
(*T)->lchild->rchild = (BiTNode*)malloc(sizeof(BiTNode));
(*T)->lchild->lchild->data = 4;
(*T)->lchild->lchild->lchild = NULL;
(*T)->lchild->lchild->rchild = NULL;
(*T)->lchild->rchild->data = 5;
(*T)->lchild->rchild->lchild = NULL;
(*T)->lchild->rchild->rchild = NULL;
(*T)->rchild->data = 3;
(*T)->rchild->lchild = (BiTNode*)malloc(sizeof(BiTNode));
(*T)->rchild->rchild = (BiTNode*)malloc(sizeof(BiTNode));
(*T)->rchild->lchild->data = 6;
(*T)->rchild->lchild->lchild = NULL;
(*T)->rchild->lchild->rchild = NULL;
(*T)->rchild->rchild->data =7;
(*T)->rchild->rchild->lchild = NULL;
(*T)->rchild->rchild->rchild = NULL;
}
void display(BiTNode *elem)
{
printf("%d ",elem->data);
}
void PreOrder (BiTree T)
{
if(T)
{
display(T);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree T)
{
if(T)
{
InOrder(T->lchild);
display(T);
InOrder(T->rchild);
}
}
void PostOrder(BiTree T)
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
display(T);
}
}
int main()
{
BiTree Tree;
CreateTree(&Tree);
printf("先序遍历:\n");
PreOrder(Tree);
printf("\n");
printf("中序遍历:\n");
InOrder(Tree);
printf("\n");
printf("中序遍历:\n");
PostOrder(Tree);
return 0;
}