c語言_構建一個靜態(tài)二叉樹實現方法
更新時間:2017年05月28日 11:11:57 投稿:jingxian
下面小編就為大家?guī)硪黄猚語言_構建一個靜態(tài)二叉樹實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
第一、樹的構建
定義樹結構
struct BTNode {
char data;
struct BTNode* pLChild;
struct BTNode* pRChild;
};
靜態(tài)方式創(chuàng)建一個簡單的二叉樹
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.后續(xù)遍歷
//后序輸出
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("創(chuàng)建序列\(zhòng)n");
struct BTNode* pHead = create_list();
printf("先序輸出\n");
PreTravense(pHead);
printf("中序輸出\n");
InTravense(pHead);
printf("后序輸出\n");
PostTravense(pHead);
return 0;
}

以上這篇c語言_構建一個靜態(tài)二叉樹實現方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C++ LeetCode1780判斷數字是否可以表示成三的冪的和
這篇文章主要為大家介紹了C++ LeetCode1780判斷數字是否可以表示成三的冪的和題解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12

