蓝桥

Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

Input

两行,每行一个字符串,分别表示中序和后序排列

Output

一个字符串,表示所求先序排列

Sample Input

BADC
BDCA

Sample Output

ABCD
 1 #include <bits/stdc++.h>
 2 const int INF=0x3f3f3f3f;
 3 typedef long long LL;
 4 const double eps =1e-8;
 5 const int mod=1e9+7;
 6 const int maxn=1e5+10;
 7 using namespace std;
 8 
 9 string a;
10  
11 void solve(string b,string c)
12 {
13     string b1,b2,c1,c2;
14     int lenb=b.size();
15     int lenc=c.size();
16     a+=c[lenc-1];
17     int pos=b.find(c[lenc-1],0);
18     b1=b.substr(0,pos);
19     b2=b.substr(pos+1,(lenb-pos-1));
20     c1=c.substr(0,pos);
21     c2=c.substr(pos,(lenb-pos-1));
22     if(b1.size()&&c1.size()) solve(b1,c1);
23     if(b2.size()&&c2.size()) solve(b2,c2);
24 }
25  
26 int main()
27 {
28     #ifdef DEBUG
29     freopen("sample.txt","r",stdin);
30     #endif
31     
32     string b,c;
33     cin>>b>>c;
34     solve(b,c);
35     cout<<a<<endl;
36      
37     return 0;
38 }

-

原文地址:https://www.cnblogs.com/jiamian/p/12578709.html