0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言編程中如何求出二叉樹后序遍歷

C語言編程基礎(chǔ) ? 來源:CSDN博客 ? 作者:mcl19909949541 ? 2021-08-23 11:04 ? 次閱讀

題目

已知二叉樹前序?yàn)?ABDFGCEH 后序序列為 BFDGACEH ,要求輸出后序遍歷為 FGDBHECA

大體思路

又先序得出根,先序的根后為左樹一部分,我們再在中序序列里找到先序的根,此處之前即為左樹(可以畫圖好好理解下),此處之后為右樹。然后就是不斷遞歸即可。

代碼

#include

#include

#include

#define MAX 100

typedef struct Node{

char data;

struct Node *Lchild;

struct Node *Rchild;

}BiTNode,*Bitree;

void PreTree(Bitree T) //后序輸出樹

{ if(T==NULL) return;

PreTree(T-》Lchild);

PreTree(T-》Rchild);

printf(“%c”,T-》data);

}

char pre[MAX];

char mid[MAX];

int MidFind(int left,int right,char MID)

{

for(int i=left;i

{

if(mid[i]==MID) return i;

}

return 0;

}

void Create(int left,int right,int *i,BiTNode **T) //此題建立樹得先將孩子結(jié)點(diǎn)賦NULL,因?yàn)闆]有用戶輸入以確定什么時(shí)候把某個(gè)具體的結(jié)點(diǎn)賦為NULL

{//這是第一種創(chuàng)建二叉樹的寫法(二級指針法)

//這種感覺是把指針?biāo)瓦M(jìn)函數(shù)處理

*T=(Bitree)malloc(sizeof(BiTNode));

(*T)-》data=pre[*i];

(*T)-》Lchild=NULL;

(*T)-》Rchild=NULL;

(*i)++;

int midnumber = MidFind(left,right,(*T)-》data);

if(midnumber》left)

{

Create(left,midnumber-1,i,(&((*T)-》Lchild)));

}

if(midnumber

{

Create(midnumber+1,right,i,(&((*T)-》Rchild)));

}

}

BiTNode* Create2(int left,int right,int *i)

{//第二中創(chuàng)建方式(注意返回!?。。?/p>

//這種感覺是把指針讓函數(shù)處理(自己不進(jìn)去)

BiTNode *T;

T=(Bitree)malloc(sizeof(BiTNode));

T-》data=pre[*i];

T-》Lchild=NULL;

T-》Rchild=NULL;

(*i)++;

int midnumber = MidFind(left,right,T-》data);

if(midnumber》left)

{

T-》Lchild = Create2(left,midnumber-1,i);

}

if(midnumber

{

T-》Rchild = Create2(midnumber+1,right,i);

}

return T;

}

int main()

{

memset(pre,0,MAX);

memset(mid,0,MAX);

gets(pre);

gets(mid);

int left,right,len,i=0;

len=strlen(pre);

left=0;

right=len-1;

BiTNode *T=(Bitree)malloc(sizeof(BiTNode)); //這里可以不用分配空間,因?yàn)樵诤瘮?shù)里會(huì)進(jìn)行分配

Create(left,right,&i,&T);

PreTree(T);

return 0;

}

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140644
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3685

    瀏覽量

    94939
  • 二叉樹
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    12583

原文標(biāo)題:C語言編程:已知二叉樹前序和中序,如何求出后序遍歷?

文章出處:【微信號:xx-cyy,微信公眾號:C語言編程基礎(chǔ)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)c語言編程實(shí)例大全

    單片機(jī)c語言編程實(shí)例大全_18
    發(fā)表于 04-30 16:11 ?3次下載

    深入理解C語言C語言循環(huán)控制

    C語言編程,循環(huán)結(jié)構(gòu)是至關(guān)重要的,它可以讓程序重復(fù)執(zhí)行特定的代碼塊,從而提高編程效率。然而,為了避免程序進(jìn)入無限循環(huán),
    的頭像 發(fā)表于 04-29 18:49 ?936次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:<b class='flag-5'>C</b><b class='flag-5'>語言</b>循環(huán)控制

    gitee 支持的編程語言有哪些

    Gitee 支持的常見編程語言: Python :一種廣泛使用的高級編程語言,以其清晰的語法和代碼可讀性而聞名。 Java :一種面向?qū)ο蟮?b class='flag-5'>編程
    的頭像 發(fā)表于 01-06 09:50 ?598次閱讀

    Triton編譯器支持的編程語言

    編寫和優(yōu)化深度學(xué)習(xí)代碼。Python是一種廣泛使用的高級編程語言,具有簡潔易讀、易于上手、庫豐富等特點(diǎn),非常適合用于深度學(xué)習(xí)應(yīng)用的開發(fā)。 、領(lǐng)域特定語言(DSL) Triton也提供
    的頭像 發(fā)表于 12-24 17:33 ?899次閱讀

    編程語言的誤區(qū)與常見問題

    : 選擇編程語言時(shí),應(yīng)考慮項(xiàng)目需求、個(gè)人興趣以及語言的適用性。例如,如果你對Web開發(fā)感興趣,那么學(xué)習(xí)JavaScript可能是一個(gè)好選擇。 認(rèn)識到?jīng)]有一種編程
    的頭像 發(fā)表于 11-15 09:35 ?681次閱讀

    NPU支持的編程語言有哪些

    與NPU一起使用: C/C++ : CC++是性能要求較高的應(yīng)用的首選語言,尤其是在需要直接與硬件交互的場景
    的頭像 發(fā)表于 11-15 09:21 ?1797次閱讀

    C語言中的socket編程基礎(chǔ)

    Socket編程簡介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過使用socket,
    的頭像 發(fā)表于 11-01 16:51 ?1096次閱讀

    MCU編程語言和開發(fā)環(huán)境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品。隨著技術(shù)的發(fā)展,MCU編程語言和開發(fā)環(huán)境也在不斷進(jìn)步,以適應(yīng)不同的應(yīng)用需求。 1.
    的頭像 發(fā)表于 11-01 11:51 ?2067次閱讀

    C語言與Java語言的對比

    C語言和Java語言都是當(dāng)前編程領(lǐng)域中的重要成員,它們各自具有獨(dú)特的優(yōu)勢和特點(diǎn),適用于不同的應(yīng)用場景。以下將從語法特性、內(nèi)存管理、跨平臺性、性能、應(yīng)用領(lǐng)域等多個(gè)方面對
    的頭像 發(fā)表于 10-29 17:31 ?975次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級編程的首選
    的頭像 發(fā)表于 10-29 17:30 ?963次閱讀

    Orin芯片的編程語言支持

    語言支持 Orin芯片支持多種編程語言,以滿足不同開發(fā)者的需求。其中,C/C++和Python是兩種廣泛應(yīng)用的
    的頭像 發(fā)表于 10-27 16:45 ?902次閱讀

    plc編程語言編程相關(guān)技巧有哪些

    Function Chart, SFC)等。這些編程語言各有特點(diǎn),適用于不同的應(yīng)用場景。 梯形圖(LD) : 梯形圖是最常用的PLC編程語言,它類似于電氣控制線路
    的頭像 發(fā)表于 10-21 16:56 ?994次閱讀

    什么是默克爾(Merkle Tree)?如何計(jì)算默克爾根?

    01 默克爾的概念 默克爾(Merkle Tree)是一種特殊的二叉樹,它的每個(gè)節(jié)點(diǎn)都存儲(chǔ)了一個(gè)數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度的字符串的算法,它具有唯一性和不可
    的頭像 發(fā)表于 09-30 18:22 ?2106次閱讀
    什么是默克爾<b class='flag-5'>樹</b>(Merkle Tree)?如何計(jì)算默克爾根?

    hex文件如何查看原c語言代碼

    是處理器可以直接執(zhí)行的指令,而 C 語言代碼則是人類可讀的高級編程語言代碼。 然而,如果你想要從 .hex 文件獲取一些有用的信息或者對程
    的頭像 發(fā)表于 09-02 10:37 ?4599次閱讀

    plc編程st語言怎么編

    PLC(可編程邏輯控制器)編程的ST(Structured Text)語言是一種高級編程語言
    的頭像 發(fā)表于 08-25 10:05 ?2621次閱讀