此题给出中序遍历和后序遍历后的序列,乍一看确乎想不出法子解决,毕竟是逆向思维;
但是后序遍历的特殊性质 son1,son2,x 使得后序的末尾便是根节点,再由中序天然的递归性质便可递归输出,用下find,substr便极为好做
#include<bits/stdc++.h>
using namespace std; void be(string in,string af){
if(in.size()){
char ch=af[af.size()-];
cout<<ch;
int k=in.find(ch);
be(in.substr(,k),af.substr(,k));
be(in.substr(k+),af.substr(k,af.size()--k));
}
}
int main(){
string in,af;
cin>>in>>af;
be(in,af);
return ;
}