時間限制: 1 s
空間限制: 64000 kb
題目等級 : ** silver
description
輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。
輸入描述
input description
共兩行,第一行乙個字串,表示樹的先序遍歷,第二行乙個字串,表示樹的中序遍歷。
輸出描述
output description
僅一行,表示樹的後序遍歷序列。
樣例輸入
sample input
abdehicfg
dbheiafcg
樣例輸出
sample output
dhiebfgca
資料範圍及提示
data size & hint
輸入長度不大於255。
分類標籤 tags 點此展開
1 #include2 #include3 #include4using
namespace
std;
5string
s1,s2;
6void calc(int l1,int r1,int l2,int
r2)7
15int
main()
1621
//前序遍歷的每個分塊的第乙個值為根節點,我從中序遍歷裡找到其相應位置,
22//
之前即為左子樹的範圍,之後為右子樹的範圍
23//
if (k > l2) solve(l1+1,l1+k-l2,l2,k-1);
24//
判斷條件是當找到了最底層的節點的時候就不做了(此時k=l2)
25//
l1+1:下乙個左子樹最開頭的節點的位置,l1-k+l2:通過中序遍歷求出左子樹的範圍進而找到左子樹最後乙個節點的位置
26//
if (k < r2) solve(l1+k-l2+1,r1,k+1,r2);
27//
l1+k-l2+1:緊接著右子樹第乙個節點也就是根節點的位置(l1+k-l2是左子樹最後乙個節點的位置,加一即為右子樹第乙個節點)
28//
cout << first[l1];
//因為求後序遍歷所以遞迴呼叫最後才輸出根節點的值
Code vs 2010 求後序遍歷
輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。前序遍歷 根節點 左子樹前序遍歷 右子樹前序遍歷。中序遍歷 左子樹中序遍歷 根節點 右子樹中序遍歷。只需先在前序遍歷中找出根節點,再在中序遍歷中找出左右子樹的節點列表,再遞迴以上步驟輸出即可。include include include in...
codevs 2010 求後序遍歷x
題目描述 description 輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。輸入描述 input description 共兩行,第一行乙個字串,表示樹的先序遍歷,第二行乙個字串,表示樹的中序遍歷。輸出描述 output description 僅一行,表示樹的後序遍歷序列。樣例輸入 ...
求後序遍歷
給出一棵二叉樹的前序和中序遍歷,求它的後序遍歷。樹結點用不同的大寫字母表示,長度小於等於26。input 本問題有多組測試資料,每組測試資料有兩行,每行都是由大寫字母組成,分別表示一顆二叉樹的前序和中序遍歷。output 根據給定的前序和中序遍歷,輸出相應的後序遍歷。sample input abc...