遞迴求先序排列

2021-10-24 06:02:07 字數 924 閱讀 9700

給出一棵二叉樹的中序與後序排列。求出它的先序排列。(約定樹結點用不同的大寫字母表示,長度≤8)。

2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。

1行,表示一棵二叉樹的先序。

輸入 #1

badc

bdca

輸出 #1

abcd
首先要知道這些遍歷的順序:前序遍歷根左右,中序遍歷左根右,後序遍歷左右根。

所以求前序遍歷就是不斷的找根節點輸出。

以樣例為例做乙個簡單的說明。

中序遍歷:badc,後序遍歷:bdca

根據後序遍歷,我們可以知道二叉樹的根節點是 a,輸出a

知道了根節點,我們就能在中序遍歷以根節點為界找到二叉樹的左子樹為b,右子樹為dc

再回到後序遍歷,就可以確定b為左子樹的根節點,輸出b,c為右子樹的根節點,輸出c

再回到中序遍歷,可以確定d為左子樹

再回到後序遍歷,可以確定d為左子樹根節點,輸出d

綜上,前序遍歷為abcd。

解題步驟可以總結如下:

1.在後序遍歷找到根節點,輸出

2.借助第一步找到的根節點,結合中序遍歷,找出左子樹和右子樹包含的點

3.重複前兩步,直到樹為空

#include

using

namespace std;

string zx,hx;

//遞迴輸出

voidf(

int zl,

int zr,

int hl,

int hr)

//中序左邊界,中序右邊界,後序左邊界,後序右邊界

intmain()

求先序排列

給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8。2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。1行,表示一棵二叉樹的先序。badc bdca abcd 就是乙個先中後序遍歷的問題,看 吧,有標註示。include include using...

求先序排列

題目描述 給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 16 輸入 每個測試檔案只包含一組測試資料,每組輸入包含兩行,第一行輸入乙個字串表示二叉樹的中序排列,第二行輸入乙個字串表示二叉樹的後序排列。輸出 對於每組輸入資料,輸出二叉樹的先序排列。樣例輸入 ba...

求先序排列

operatorname luogup 1030 給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 le 8 8 2 22 行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。1 11 行,表示一棵二叉樹的先序。badc bdcaabcd這道題是一道...