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