#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//二叉链表示法
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void preOrder(BiTNode *root)//先序遍历(先遍历根然后遍历左子树最后遍历右子树)
{
if(root==NULL)
{
return ;
}
printf("%c ",root->data);
preOrder(root->lchild);//遍历左子树
preOrder(root->rchild);//遍历右子树
}
void inOrder(BiTNode *root)//中序遍历(先遍历左子树然后遍历根最后遍历右子树)
{
if(root==NULL)
{
return ;
}
inOrder(root->lchild);//遍历左子树
printf("%c ",root->data);
inOrder(root->rchild);//遍历右子树
}
void postOrder(BiTNode *root)//后序遍历(先遍历左子树然后遍历右子树最后遍历根)
{
if(root==NULL)
{
return ;
}
postOrder(root->lchild);//遍历左子树
postOrder(root->rchild);//遍历右子树
printf("%c ",root->data);
}
void main()
{
//创建树的节点
BiTNode a={'A',NULL,NULL};
BiTNode b={'B',NULL,NULL};
BiTNode c={'C',NULL,NULL};
BiTNode d={'D',NULL,NULL};
BiTNode e={'E',NULL,NULL};
BiTNode f={'F',NULL,NULL};
BiTNode g={'G',NULL,NULL};
BiTNode h={'H',NULL,NULL};
BiTNode i={'I',NULL,NULL};
//建立关系
a.lchild=&b;
a.rchild=&e;
b.rchild=&c;
c.lchild=&d;
e.rchild=&f;
f.lchild=&g;
g.lchild=&h;
g.rchild=&i;
//树的遍历
printf("先序遍历:");
preOrder(&a);
printf("\n");
printf("中序遍历:");
inOrder(&a);
printf("\n");
printf("后序遍历:");
postOrder(&a);
printf("\n");
system("pause");
}