二叉樹遍歷-遞歸-前中後序-C代碼

#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);
        }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章