#include <stdio.h>
//定義二叉樹結點鏈式存儲結構
struct BiTNode{
int data;//數據域
struct BiTNode *lchild,*rchild;//左右孩子指針
}*BiTree;
int main(){
//初始化結點
struct BiTNode node1,node2,node3,node4,node5,node6,node7;
node1=(struct BiTNode){1,&node2,&node3};
node2=(struct BiTNode){2,&node4,&node5};
node3=(struct BiTNode){3,&node6,&node7};
node4=(struct BiTNode){4,NULL,NULL};
node5=(struct BiTNode){5,NULL,NULL};
node6=(struct BiTNode){6,NULL,NULL};
node7=(struct BiTNode){7,NULL,NULL};
//建樹
BiTree=&node1;
node1.lchild=&node2;
node1.rchild=&node3;
node2.lchild=&node4;
node2.rchild=&node5;
node3.lchild=&node6;
node3.rchild=&node7;
PreOrder(BiTree);
printf("\n");
InOrder(BiTree);
printf("\n");
PostOrder(BiTree);
printf("\n");
return 0;
}
//先序遍歷
int PreOrder(struct BiTNode *BiTree){
if(BiTree!=NULL){
printf("%d ",BiTree->data);
PreOrder(BiTree->lchild);
PreOrder(BiTree->rchild);
}
}
//中序遍歷
int InOrder(struct BiTNode *BiTree){
if(BiTree!=NULL){
InOrder(BiTree->lchild);
printf("%d ",BiTree->data);
InOrder(BiTree->rchild);
}
}
//後序遍歷
int PostOrder(struct BiTNode *BiTree){
if(BiTree!=NULL){
PostOrder(BiTree->lchild);
PostOrder(BiTree->rchild);
printf("%d ",BiTree->data);
}
}