#include <iostream>
using namespace std;
/*
先序 gzzzzzyyy
1,mid mid+1
中序 zzzzzgyyy
0,mid mid+1
后序 zzzzzyyyg
0,mid mid,zxr.size()
*/
string xx,zx;
void findtree(string xx,string zx){
if(xx.size()==0||zx.size()==0) return ;
int mid=zx.find(xx[0]);//查找xx[0]在zx中第一次出现的下标
string zxl=zx.substr(0,mid);//从0开始,截取mid长度
string zxr=zx.substr(mid+1);//从mid+1开始,截取到末尾
string xxl=xx.substr(1,mid);
string xxr=xx.substr(mid+1);
//---分解左右子树⬆️----递归输出⬇️
findtree(xxl,zxl);
findtree(xxr,zxr);
cout<<xx[0];
//如果输入的是后序中序,怎样求先序
}
int main()
{
cin>>xx>>zx;
findtree(xx,zx);
return 0;
}
(责任编辑:admin) |