初级天翼
#include<cstring>
#include<iostream>
#include<cstdio>
using namespace std;
string s1,s2;
void calc(int l1,int r1,int l2,int r2)
{
int m=s2.find(s1[l1]);
if(m>12)calc(l1+1,l1+m-l2,l2,m-1);
if(m<r2)calc(l1+m-l2+1,r1,m+1,r2);
cout<<s1[l1];
}
int main()
{
cin>>s1>>s2;
//freopen("tree.in","r",stdin);
//freopen("tree.out","w",stdout);
calc(0,s1.length()-1,0,s2.length()-1);
cout<<endl;
return 0;
}
求大神指点!!!
高级光能
先看↓
假设二叉树一共有n个结点。
1.先序遍历的第一个结点为整个二叉树的根,找到这个结点在中序遍历中的位置p(是第几个结点)。
2.这个二叉树的左子树
先序遍历是原二叉树先序遍历的第2到第p个,中序遍历是原二叉树中序遍历的第1到第p-1个。
3.这个二叉树的右子树
先序遍历是原二叉树先序遍历的第p+1到第n个,中序遍历是原二叉树中序遍历的第p+1到第n个。
4.通过递归可以还原这个二叉树,递归的终止条件是二叉树只有一个根结点。
5.把还原的二叉树后续遍历并输出。
-----------------------------------------------------------------------------------------------------------------------------------------------
再看↓
string s1,s2;
int pos(char c,string s)
{
int i,l;
l=s.size();
for (i=0;i<l;i++)
if (c==s[i])
return i;
}
void tr(int l1,int r1,int l2,int r2)
{
int m;
m=pos(s1[l1],s2);
if (m>l2)
tr(l1+1,l1+m-l2,l2,m-1);
if (m<r2)
tr(l1+m-l2+1,r1,m+1,r2);
cout<<s1[l1];
}
懂了吗?