那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

題目

已知二叉樹前序為 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) //此題建立樹得先將孩子結點賦NULL,因為沒有用戶輸入以確定什么時候把某個具體的結點賦為NULL

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

//這種感覺是把指針送進函數處理

*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)

{//第二中創建方式(注意返回!!!)

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

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)); //這里可以不用分配空間,因為在函數里會進行分配

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

PreTree(T);

return 0;

}

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137703
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93981
  • 二叉樹
    +關注

    關注

    0

    文章

    74

    瀏覽量

    12373

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

文章出處:【微信號:xx-cyy,微信公眾號:C語言編程基礎】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    gitee 支持的編程語言有哪些

    Gitee 支持的常見編程語言: Python :一種廣泛使用的高級編程語言,以其清晰的語法和代碼可讀性而聞名。 Java :一種面向對象的編程
    的頭像 發表于 01-06 09:50 ?127次閱讀

    Triton編譯器支持的編程語言

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

    編程語言的誤區與常見問題

    : 選擇編程語言時,應考慮項目需求、個人興趣以及語言的適用性。例如,如果你對Web開發感興趣,那么學習JavaScript可能是一個好選擇。 認識到沒有一種編程
    的頭像 發表于 11-15 09:35 ?374次閱讀

    NPU支持的編程語言有哪些

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

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,
    的頭像 發表于 11-01 16:51 ?465次閱讀

    MCU編程語言和開發環境介紹

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

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對
    的頭像 發表于 10-29 17:31 ?432次閱讀

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

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

    Orin芯片的編程語言支持

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

    plc編程語言編程相關技巧有哪些

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

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

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

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

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

    plc編程st語言怎么編

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

    PLC編程語言C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言C語言各自扮演著重要的角色。
    的頭像 發表于 06-14 17:11 ?3230次閱讀

    嵌入式系統C語言結構體的基礎實現與應用

    C語言中的數組只能允許程序員定義存儲相同類型數據。但是結構是C語言編程中允許您存儲不同數據類型的數據。
    發表于 03-12 14:29 ?556次閱讀
    嵌入式系統<b class='flag-5'>中</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>結構體的基礎實現與應用
    杨公24山择日| 德州扑克怎么算牌| 上饶县| 百家乐试玩账户| 真人百家乐游戏网| 澳门顶级赌场| 百家乐官网的看路技巧| 澳门百家乐打法百家乐破解方法 | 澳门百家乐官网赢钱| 百家乐赢钱心得| 昌都县| 机械手百家乐官网的玩法技巧和规则| 威尼斯人娱乐网网上百家乐的玩法技巧和规则 | 有破解百家乐官网仪器| 广州百家乐酒店用品制造有限公司 | 云博国际| 百家乐投注心得| 百家乐平注常赢玩法| 百家乐事电影| 大发888网址怎么找| 大玩家百家乐官网的玩法技巧和规则 | 真人百家乐娱乐好玩| 呼伦贝尔市| 合乐8百家乐娱乐城| 澳门百家乐官网官网www.bjbj100.com| 百家乐社区| 百家乐官网作弊内幕| 星际百家乐娱乐城| 百家乐官网游戏开发软件| 全讯网abckkk.com| 百家乐官网投注外围哪里好| bet365怎么上不去| 百家乐9人桌布| 至尊百家乐官网qvod| 大发888娱乐城888| 罗盘24层| 密云县| 威尼斯人娱乐城博彩网| 圣保罗百家乐官网的玩法技巧和规则 | 视频百家乐官网攻略| 单机棋牌游戏下载|