c語言_構建一個靜態二叉樹實現方法。本站提示廣大學習愛好者:(c語言_構建一個靜態二叉樹實現方法)文章只能為提供參考,不一定能成為您想要的結果。以下是c語言_構建一個靜態二叉樹實現方法正文
投稿:jingxian
下面小編就為大家帶來一篇c語言_構建一個靜態二叉樹實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧第一、樹的構建
定義樹結構
struct BTNode { char data; struct BTNode* pLChild; struct BTNode* pRChild; };
靜態方式創建一個簡單的二叉樹
struct BTNode* create_list() { struct BTNode* pA = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pB = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pC = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pD = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pE = (struct BTNode*)malloc(sizeof(BTNode)); pA->data = 'A'; pB->data = 'B'; pC->data = 'C'; pD->data = 'D'; pE->data = 'E'; pA->pLChild = pB; pA->pRChild = pC; pB->pLChild = pB->pRChild = NULL; pC->pLChild = pD; pC->pRChild = NULL; pD->pLChild = NULL; pD->pRChild = pE; pE->pLChild = pE->pRChild = NULL; return pA; }
第二、樹的三種遍歷
1. 先序遍歷
//先序輸出 void PreTravense(struct BTNode* pHead) { if (NULL!= pHead) { printf("%c", pHead->data); if (NULL!= pHead->pLChild) { PreTravense(pHead->pLChild); } if (NULL != pHead->pRChild) { PreTravense(pHead->pRChild); } } }
2. 中序遍歷
//中序輸出 void InTravense(struct BTNode* pHead) { if (NULL != pHead) { if (NULL != pHead->pLChild) { PreTravense(pHead->pLChild); } printf("%c", pHead->data); if (NULL != pHead->pRChild) { PreTravense(pHead->pRChild); } } }
3.後續遍歷
//後序輸出 void PostTravense(struct BTNode* pHead) { if (NULL != pHead) { if (NULL != pHead->pLChild) { PreTravense(pHead->pLChild); } if (NULL != pHead->pRChild) { PreTravense(pHead->pRChild); } printf("%c", pHead->data); } }
第三、最終運行測試
int main() { printf("創建序列\n"); struct BTNode* pHead = create_list(); printf("先序輸出\n"); PreTravense(pHead); printf("中序輸出\n"); InTravense(pHead); printf("後序輸出\n"); PostTravense(pHead); return 0; }
以上這篇c語言_構建一個靜態二叉樹實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。