給出一棵二叉樹的中序與後序排列。求出它的先序排列。(約定樹結點用不同的大寫字母表示,長度\le 8≤8)。
22行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。
11行,表示一棵二叉樹的先序。
輸入 #1複製
badc輸出 #1複製bdca
abcd題解:二叉樹的遍歷分別如下:
前序 :根 - 左 - 右
中序:左 - 根 - 右
後序:左 - 右 - 根
現在已經知道了後序和中序,想輸出前序,對於後序來說,每次最後乙個就是根,直接輸出就得到了整棵樹的根,然後左右子樹分別遞迴,遞迴的時候就需要靠中序將兩部分分開。然後同樣的方式處理左右子樹。
這裡的左右遞迴沒有去建立二叉樹,通過stl可以直接查詢進行遞迴。
**思路來自洛谷題解。
#include using namespace std;
void solve(string a, string b) // a 是中序,b 是後序
}int main()
P1030 求先序排列
給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。1行,表示一棵二叉樹的先序。badc bdca abcd 一棵樹的後序遍歷中的最後一位就是根結點,而中序遍歷中根結點的左右兩邊就是左右子樹上的結點...
P1030 求先序排列
給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 輸入格式 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。輸出格式 1行,表示一棵二叉樹的先序。輸入樣例 1 複製badc bdca includeusing namespace std str...
P1030 求先序排列
給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 輸入格式 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。輸出格式 1行,表示一棵二叉樹的先序。輸入樣例 1 複製badc bdca 輸出樣例 1 複製abcd 思路 後序遍歷的最後乙個元素必定...