給出一棵二叉樹的中序與後序排列。求出它的先序排列。(約定樹結點用不同的大寫字母表示,長度≤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這道題是一道...