C實現二叉樹的先序遍曆,中序遍曆,後序遍曆

來源:互聯網
上載者:User

1  要建立的二叉樹圖

 

2 輸出結果圖 :

 

3 完整代碼如下:

#include<stdio.h>#include<malloc.h>//定義二叉樹typedef struct BTreeNode{ char name; struct BTreeNode *LBTreeNode; struct BTreeNode *RBTreeNode;}BTreeNode,*PBTreeNode ;PBTreeNode createBTtree();void preTraversal(PBTreeNode node);void inorderTraversal(PBTreeNode node);void afterTraversal(PBTreeNode node);int main(void){PBTreeNode head = createBTtree();//前序走訪printf("先序遍曆結果為 : ");preTraversal(head);printf("\n");//中序遍曆printf("中序遍曆結果為 : ");inorderTraversal(head);printf("\n");//後序遍曆printf("後序遍曆結果為 : ");afterTraversal(head);printf("\n"); return 1;};//建立二叉樹PBTreeNode createBTtree(){ PBTreeNode A = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; A->name = 'A'; PBTreeNode B = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; B->name = 'B'; PBTreeNode C = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; C->name = 'C'; PBTreeNode D = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; D->name = 'D'; PBTreeNode E = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; E->name = 'E'; PBTreeNode H = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; H->name = 'H'; PBTreeNode G = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; G->name = 'G'; PBTreeNode O = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; O->name = 'O'; PBTreeNode P = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; P->name = 'P'; PBTreeNode L = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; L->name = 'L'; PBTreeNode M = (BTreeNode * ) malloc(sizeof(BTreeNode)) ; M->name = 'M'; A->LBTreeNode = B; A->RBTreeNode = C; B->LBTreeNode = H; B->RBTreeNode = G; C->LBTreeNode = D; C->RBTreeNode = NULL; D->LBTreeNode = NULL; D->RBTreeNode = E; E->LBTreeNode = L; E->RBTreeNode = M; L->LBTreeNode = NULL; L->RBTreeNode = NULL; M->LBTreeNode = NULL; M->RBTreeNode = NULL; H->LBTreeNode = NULL; H->RBTreeNode = NULL; G->LBTreeNode = O; G->RBTreeNode = P; O->LBTreeNode = NULL; O->RBTreeNode = NULL; P->LBTreeNode = NULL; P->RBTreeNode = NULL; return A;};//先序遍曆 void preTraversal(PBTreeNode node){     if(node == NULL) return;     printf("%c ",node->name);     if(node->LBTreeNode != NULL){       preTraversal(node->LBTreeNode);     };     if(node->RBTreeNode != NULL){         preTraversal(node->RBTreeNode);     }; }; //l中序遍曆 void inorderTraversal(PBTreeNode node){     if(node == NULL) return;     if(node->LBTreeNode != NULL){       inorderTraversal(node->LBTreeNode);     };     printf("%c ",node->name);     if(node->RBTreeNode != NULL){         inorderTraversal(node->RBTreeNode);     }; };//後序遍曆 void afterTraversal(PBTreeNode node){     if(node == NULL) return;     if(node->LBTreeNode != NULL){       afterTraversal(node->LBTreeNode);     };     if(node->RBTreeNode != NULL){         afterTraversal(node->RBTreeNode);     };     printf("%c ",node->name); };


 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.