C实现二叉树的先序遍历,中序遍历,后序遍历
生活随笔
收集整理的這篇文章主要介紹了
C实现二叉树的先序遍历,中序遍历,后序遍历
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1? 要?jiǎng)?chuàng)建的二叉樹(shù)圖
?
2 輸出結(jié)果圖 :
?
3 完整代碼如下:
#include<stdio.h> #include<malloc.h>//定義二叉樹(shù) 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("先序遍歷結(jié)果為 : "); preTraversal(head); printf("\n");//中序遍歷 printf("中序遍歷結(jié)果為 : "); inorderTraversal(head); printf("\n");//后序遍歷 printf("后序遍歷結(jié)果為 : "); afterTraversal(head); printf("\n");return 1; };//創(chuàng)建二叉樹(shù) 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);};
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的C实现二叉树的先序遍历,中序遍历,后序遍历的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。