已知二叉樹後序遍歷序列是dabec,中序遍歷序列是debac

時間 2021-07-15 02:19:02

1樓:第六位面壁者

選d首先看後續遍歷,最後的c是二叉樹的根節點,然後看中序遍歷,最後一個又是c,所以這個二叉樹根節點沒有右子樹。

c的位置得到後,再看後續遍歷,e在c前面,所以e是c的左孩子節點,e的位置得到。

然後再看中序遍歷,e前面只有一個d,所以d是e的左孩子節點,d的位置得到;剩下的b和a就在e的右子樹。

然後再看後序遍歷,dabec,d是一個葉子節點,那麼就還有一個葉子節點,那麼這個節點就一定是a,那麼b就是e的右孩子節點,最後再結合中序遍歷就可得出所表示得二叉樹。(如果這步沒看懂,可以在前面得基礎上一個一個的試,也不麻煩,就四種可能,最後只有一個是符合的)

2樓:仙戈雅

中序遍歷:debac

後序遍歷:dabec

推導如下:

1、從後序可知樹根為c,因為最後的節點是樹根。

2、從中序的規則可知樹根在中間,樹根的左邊是左孩子,右邊是右孩子。很明顯樹根c是沒有右孩子,只有左孩子deba。

中序遍歷:deba

後序遍歷:dabe

推出e是左子樹的根結點,並且存在左子樹d,右子樹ba,因為從中序遍歷可知e的左邊是d,右邊是ba

中序遍歷:ba

後序遍歷:ab

推出b是右子樹的根結點,並且存在右子樹,但沒有左子樹,因為從中序遍歷可知b只有右子樹,沒有左子樹。

還原二叉樹如下圖:

前序為:cedba

推導的方法只需記住下面的規則即可,然後逐步分割法,就像我上面那樣推導。拿到左右子樹反覆套用下面的遍歷規則,很快就可以還原一棵完整的樹。

1.先序遍歷:根、左、右

2.中序遍歷:左、根、右

3.後序遍歷: 左、右、根

3樓:軍弘秋梵

dbacde,就是這樣的,雖然我不會,但是瞎寫誰不會啊,??

4樓:

這種題,主要考慮個節點的邏輯關係,先序遍歷就是:根左右後序遍歷就是:左右根,中序遍歷就是:左根右。

抓住一個關鍵,例如本題中後序和中序第一個節點都是d,那麼可以確定:d沒有右子樹,d本身是一個節點的左子樹。中序遍歷,d後面是e,說明d父節點是e,在草稿上畫出來這個關係。

在看中序遍歷e後面是b,說明b是e的右子樹,這樣我們確定了3個節點了。再看中序的遍歷b後的是a,但我們無法確定是左還是右,先放著,繼續看後序遍歷e後面是c,通過這個條件,說明c可能是e的父節點的右子樹,也可能就是e的父節點,但是本題一共只有5個節點,所以c肯定是e的父節點。這樣,我們可以確定4個節點了,這剩下a節點。

要區分a是左還是右,我們看後序遍歷,a是在d之後,b之前,這個條件也只能說a是b子節點,但仍然不能說明左右。所以我覺得:這道題有2個解:

a在左在右,都是正確的。a是左是右,都符合後序和中序的遍歷,都為正確。所以,只畫這個圖是不完整的,應該把a分別為左右節點的圖都畫出來,作為答案,a的位置不同,雖然先序遍歷的結果都一樣,但是圖是不一樣的。

不知你看懂沒有。

5樓:黑道人

前序: 根左右

中序: 左根右

後序: 左右根

```````````````````c/e/ \

d b\a

前序: cedba

已知二叉樹後序遍歷序列是dabec,中序遍歷序列debac,它的前序遍歷的序列是

6樓:左清安賽辛

中序遍歷:debac

後序遍歷:dabec

推導如下:

1、從後序可知樹根為c,因為最後的節點是樹根。

2、從中序的規則可知樹根在中間,樹根的左邊是左孩子,右邊是右孩子。很明顯樹根c是沒有右孩子,只有左孩子deba。

中序遍歷:deba

後序遍歷:dabe

推出e是左子樹的根結點,並且存在左子樹d,右子樹ba,因為從中序遍歷可知e的左邊是d,右邊是ba

中序遍歷:ba

後序遍歷:ab

推出b是右子樹的根結點,並且存在右子樹,但沒有左子樹,因為從中序遍歷可知b只有右子樹,沒有左子樹。

還原二叉樹如下圖:

前序為:cedba

推導的方法只需記住下面的規則即可,然後逐步分割法,就像我上面那樣推導。拿到左右子樹反覆套用下面的遍歷規則,很快就可以還原一棵完整的樹。

1.先序遍歷:根、左、右

2.中序遍歷:左、根、右

3.後序遍歷:

左、右、根

7樓:解蕊慎水

選d首先看後續遍歷,最後的c是二叉樹的根節點,然後看中序遍歷,最後一個又是c,所以這個二叉樹根節點沒有右子樹。

c的位置得到後,再看後續遍歷,e在c前面,所以e是c的左孩子節點,e的位置得到。

然後再看中序遍歷,e前面只有一個d,所以d是e的左孩子節點,d的位置得到;剩下的b和a就在e的右子樹。

然後再看後序遍歷,dabec,d是一個葉子節點,那麼就還有一個葉子節點,那麼這個節點就一定是a,那麼b就是e的右孩子節點,最後再結合中序遍歷就可得出所表示得二叉樹。(如果這步沒看懂,可以在前面得基礎上一個一個的試,也不麻煩,就四種可能,最後只有一個是符合的)

8樓:匿名使用者

cedba,過程我要想一想,反正除了知道前序和後序,求中序,都是唯一解

9樓:

由後序(左子樹,右子樹,根節點)dabec知道根節點為c,再通過中序(左子樹,根節點,右子樹)知道右子樹為空

接著由dabe知道其根節點為e,所以在中序deba中左子樹為d右子樹為ba

再來,後序ab,中序ba,b為節點,a為右子樹前序遍歷序列為cedba

----c

---/

--e-/--\

d ----b

-------\

---------a

10樓:詹靖連依辰

前序:根左右

中序:左根右

後序:左右根

```````````````````c/e/\db

\a前序:cedba

已知二叉樹後序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍因序列是多少,請詳解(**)

11樓:匿名使用者

cedba

方法很簡單

dabec是後序遍歷

則c是根節點

將中序遍歷以c為中心分為兩邊

如此操作即可得到一棵樹

(dabec),(debac)

((dabe)c),((deba)c)

(((dab)e)c),(((d)e(ba))c)((((d)(a)b)e)c),(((d)e(b(a)))c)這樣就把樹給構造了出來

12樓:李希欠

前序遍因序列是cedba。

二又樹的遍歷有3種:前序、中序和後序。

①前序首先遍歷訪問根結點,然後按左右順序遍歷子結點。

②中序遍歷首先訪問左子樹,然後訪問根結點,最後遍歷右子樹。

③後序遍歷首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。本題根據後序和中序遍歷的結果可以得出二叉樹的結構,然後再對其進行前序遍歷。

二叉樹在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。

二叉樹的每個結點至多隻有二棵子樹(不存在度大於2的結點),二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2^個結點。

深度為k的二叉樹至多有2^k-1個結點;對任何一棵二叉樹t,如果其終端結點數為n_0,度為2的結點數為n_2,則n_0=n_2+1。

一棵深度為k,且有2^k-1個節點稱之為滿二叉樹;深度為k,有n個節點的二叉樹,當且僅當其每一個節點都與深度為k的滿二叉樹中,序號為1至n的節點對應時,稱之為完全二叉樹。

13樓:匿名使用者

這種簡單的遞迴演算法不知被問了多少次了。搜一下就有方法,很簡單

已知二叉樹後序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是? a acbed

14樓:萢萢

選d。由後序遍歷可知c是根結點,符合條件的只有d。

二叉樹的遍歷問題,二叉樹的遍歷問題?

程式vs2003成功編譯執行 include stdafx.h include using namespace std typedef struct tree bintree 二叉樹的建立 bintree create char str,intpose,intsize return t void p...

資料結構二叉樹的遍歷,C語言資料結構 二叉樹的遍歷

前序 根,左兒子,右兒子 中序 左兒子,根,右兒子 後序 左兒子,右兒子,根 首先是要牢記一上幾句話 比如這棵樹的中許遍歷,a有左兒子,先不訪問a,以此類推,直到d沒有左兒子,訪問d,然後訪問d的根b,然後應該訪問b的右兒子,但是b沒有,所以訪問b的根a,訪問完a以後訪問a的右子樹。先看c,c有左兒...

先序遍歷和後序遍歷是什麼,什麼叫二叉樹前序遍歷,中序遍歷,後序遍歷?

1 先序遍歷也叫做先根遍歷 前序遍歷,可記做根左右 二叉樹父結點向下先左後右 首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。例如,下圖所示二叉樹的遍歷結果是 abdecf 2 後序遍歷首先遍歷左子樹,然後遍歷...