1. 程式人生 > >P1030 求先序排列

P1030 求先序排列

輸入輸出格式 code std () void esp nbsp font find

題目描述

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

輸入輸出格式

輸入格式:

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

輸出格式:

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

輸入輸出樣例

輸入樣例#1:
BADC
BDCA
輸出樣例#1:
ABCD

【解析】
後序最後一個一定是根,找到根在中序中的位置,遞歸構建左右子樹。
【代碼】
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> 
using
namespace std; string s1,s2; void calc(int l1,int r1,int l2,int r2) { cout<<s2[r2]; int m=s1.find(s2[r2]); if (m>l1) calc(l1,m-1,l2,l2+m-l1-1); if (m<r1) calc(m+1,r1,l2+m-l1,r2-1); } int main() { cin>>s1>>s2; calc(0,s1.length()-1,0,s2.length()-1); cout
<<endl; return 0; }

 

P1030 求先序排列