您好,登錄后才能下訂單哦!
本篇內容介紹了“c語言版靜態鏈式二叉樹怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
#include <stdio.h>
#include <malloc.h>
typedef struct Node{
char data;
struct Node * pLchild;
struct Node * pRchild;
}NODE,* PNODE;
PNODE create_binTree(void);
void pre_traver(PNODE);
void in_traver(PNODE);
void post_traver(PNODE);
void main(void){
PNODE pNode = create_binTree();
//先序遍歷
//pre_traver(pNode);
//中序遍歷
//in_traver(pNode);
//后序遍歷
post_traver(pNode);
}
PNODE create_binTree(void){
PNODE pA = (PNODE)malloc(sizeof(NODE));
PNODE pB = (PNODE)malloc(sizeof(NODE));
PNODE pC = (PNODE)malloc(sizeof(NODE));
PNODE pD = (PNODE)malloc(sizeof(NODE));
PNODE pE = (PNODE)malloc(sizeof(NODE));
pA->data = 'A';
pA->pLchild = pB;
pA->pRchild = pC;
pB->data = 'B';
pB->pLchild = NULL;
pB->pRchild = NULL;
pC->data = 'C';
pC->pLchild = pD;
pC->pRchild = NULL;
pD->data = 'D';
pD->pLchild = NULL;
pD->pRchild = pE;
pE->data = 'E';
pE->pLchild = NULL;
pE->pRchild = NULL;
return pA;
}
//先序遍歷
void pre_traver(PNODE pNode){
/*
思路:1、先訪問根節點
2、再先序遍歷左子樹
3、再先序遍歷右子樹
*/
if(NULL != pNode){
printf("%c\n",pNode->data);
if(NULL != pNode->pLchild){
pre_traver(pNode->pLchild);
}
if(NULL != pNode->pRchild){
pre_traver(pNode->pRchild);
}
}
}
//中序遍歷
void in_traver(PNODE pNode){
if(NULL != pNode){
if(NULL != pNode->pLchild){
in_traver(pNode->pLchild);
}
printf("%c\n",pNode->data);
if(NULL != pNode->pRchild){
in_traver(pNode->pRchild);
}
}
}
//后序遍歷
void post_traver(PNODE pNode){
if(NULL != pNode){
if(NULL != pNode->pLchild){
post_traver(pNode->pLchild);
}
if(NULL != pNode->pRchild){
post_traver(pNode->pRchild);
}
printf("%c\n",pNode->data);
}
}
“c語言版靜態鏈式二叉樹怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。