#include <stdio.h>
#include <string.h>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long LL;
string a,b;
void pre_vis(int a_begin,int a_end,int b_begin,int b_end)
{
if(a_begin > a_end) return ;
int i;
char root = a[a_begin];
for(i = b_begin; b[i] != root; i++);
pre_vis(a_begin + 1, a_end - b_end + i,b_begin,i-1);
pre_vis(a_end - b_end + i +1, a_end, i+1,b_end);
cout<<root;
}
void las_vis(int a_begin,int a_end,int b_begin,int b_end)
{
if(a_begin > a_end) return ;
int i ;
char root = a[a_end];
cout<<root;
for(i = b_begin; b[i] != root; i++);
las_vis(a_begin, a_end - b_end + i -1,b_begin, i-1);
las_vis(a_end - b_end +i, a_end -1, i + 1,b_end);
}
int main()
{
while(cin>>a>>b)
{
int len_a = a.size();
int len_b = b.size();
//pre_vis(0,len_a-1,0,len_b-1);
las_vis(0,len_a-1,0,len_b-1);
}
return 0;
}
二叉树的遍历
最新推荐文章于 2023-07-12 17:34:57 发布