c 怎麼建立資料結構中的二叉樹?還有二叉樹怎麼線索化

2021-03-10 15:07:09 字數 836 閱讀 2641

1樓:曉凡

這個東西bai建議你去看看資料du結構中的二叉樹。zhi在c++的daostl(基礎類庫)裡是有提供直接創內建二叉樹的庫文容件的。你直接呼叫就好了。

線索化也分為前序,中序,後序三種(與遍歷順序相同),二叉樹的線索化用如下方法:

每個結點有五個部分:leftflag , leftchild, data , rightchild , rightflag.

當flag為1時,child指向的是兒子結點,如果flag為0,則child指向以你的遍歷順序為定的結點。左兒子指向前一個,右兒子指向下一個。

2樓:匿名使用者

你這個表示式是 二叉樹的中序周遊的結果,那麼 就按照中序的方法去建立專一顆樹,屬 你仔細回想一下中序周遊的過程,然後用它的逆過程就行了。。。

不過這裡涉及到優先順序的問題。。所以建立的過程 還是要使用到2個棧和運算子優先順序。

過程和站的應用的計算器是一樣的。。

過程:::

1.先把他們都轉化成節點。建立一個運算元棧,一個運算子棧 棧裡面存的都是節點的「地址」 ....

2.然後按照計算器一樣,彈出操作符的時候就他 運算元棧裡的兩個運算元做為 left 和 right 連線到 操作符。

3.操作符 出棧 並記錄下來,兩個運算元 也出棧, 把那個彈出的操作符壓入運算元棧裡面去。。。

4. 重複此過程 ,直到 操作符棧為空的時候 。 把運算元棧裡剩下的節點賦值給二叉樹的 root 。 就ok了。。。

ps: 想要輸出的話 是中序周遊,不過括號的問題很難弄,除非全部加括號輸出。 最好是用後序的。。。

over

我自己打的字 分分啊~~~

二叉樹的層次遍歷演算法,二叉樹層次遍歷怎麼進行?

建立一個佇列q 將根放入佇列 while 佇列非空 求用c語言實現二叉樹層次遍歷的遞迴演算法,謝謝!二叉樹層次遍歷怎麼進行?設計一個演算法層序遍歷二叉樹 同一層從左到右訪問 思想 用一個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。void hierarchybitree bitree root...

資料結構二叉排序樹實訓 追加100分

沒宣告的變數 search bst undeclared identifier 和 轉換出錯 convert from int to struct node 自己好好看看這不有提示嗎?太賴了吧你。資料結構課程設計 二叉排序樹的實現 追加150分 include stdio.h include str...

求用C語言寫的建立二叉樹。並且先序中序後序遍歷這個二叉樹

include include include 二叉樹資料結構定義 typedef struct binodebitnode,bitree 遞迴法建立二叉樹 void createbitree bitree bt else 遞迴法先序遍歷二叉樹 void preordertree bitree ro...