@lunar
2016-03-15T03:30:05.000000Z
字数 501
阅读 1333
HiHo
每个测试点(输入文件)有且仅有一组测试数据。
每组测试数据的第一行为一个由大写英文字母组成的字符串,表示该二叉树的前序遍历的结果。
每组测试数据的第二行为一个由大写英文字母组成的字符串,表示该二叉树的中序遍历的结果。
对于100%的数据,满足二叉树的节点数小于等于26。
对于每组测试数据,输出一个由大写英文字母组成的字符串,表示还原出的二叉树的后序遍历的结果。
AB
BA
BA
很简单直接上代码
#include<iostream>
#include "string.h"
using namespace std;
char pre[26],in[26];
void p(int l,int r,int i){
if(l==r) cout<<in[l];
else{
int m;
for(int j=l;j<=r;j++)if(pre[i]==in[j])m=j;
if(m>l)p(l,m-1,i+1);
if(m<r)p(m+1,r,i+m-l+1);
cout<<in[m];
}
}
int main(){
cin >>pre>>in;
p(0,strlen(in)-1,0);
return 0;
}