问题 A: [2001_p3]求先序排列
时间限制: 1 Sec 内存限制: 125 MB题目描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入
每个测试文件只包含一组测试数据,每组输入包含两行,第一行输入一个字符串表示二叉树的中序排列,第二行输入一个字符串表示二叉树的后序排列。
输出
对于每组输入数据,输出二叉树的先序排列。
样例输入
BADC BDCA
样例输出
ABCD
提示
#include<iostream> #include<bits/stdc++.h> using namespace std; string s1,s2; void print(int l1,int r1,int l2,int r2) { //cout<<" "<<l1<<" "<<r1<<" "<<l2<<" "<<r2<<endl; /*if(r1<=l1) { cout<<s1[l1]; return; } if(r2<=l1) { cout<<s2[l1]; return; }*/ int k=-1; for(int i=l1;i<r1;i++) { if(s1[i]==s2[r2-1]) { cout<<s1[i]; k=i; break; } } //cout<<"k "<<k<<endl; if(k>l1) { //cout<<"进入左"<<endl; print(l1,k,l2,k-l1+l2); } if(r1>k+1) { //cout<<"进入右"<<endl; print(k+1,r1,k-l1+l2,r2-1); } } int main() { cin>>s1>>s2; print(0,s1.length(),0,s2.length()); return 0; }