1366:二叉树输出(btout)
在后序遍历的基础上加上一些操作,逆向求得所有节点的子节点数。
#include<iostream>
#include<cstring>
using namespace std;
string pre,mid;
int a[105];
int solve(int pt,int l,int r){
if(l==r)return 1;
if(l>r)return 0;
int p=mid.find(pre[pt]);
return a[pt]=solve(pt+1,l,p-1)+solve(pt+p-l+1,p+1,r);
}
int main(){
cin>>pre>>mid;
solve(0,0,pre.length()-1);
for(int i=0;i<pre.length();i++){
a[i]=!a[i]?1:a[i];
for(int j=0;j<a[i];j++)
cout<<pre[i];
cout<<endl;
}
return 0;
}