1、先序中序求后序
1339 【例3-4】求后序遍历
【题目描述】
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
【输入】
共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。
【输出】
一行,表示树的后序遍历序列。
【输入样例】
abdec
dbeac
【输出样例】
debca
<代码>
#include<bits/stdc++.h>
using namespace std;
string a,b;
void dfs(int l1,int l2,int r2)
{
if(l2>r2)return ;
int id;
for(int i=l2;i<=r2;i++)
if(a[l1]==b[i])
{id=i;break;}
int l=id-l2;//跨越的长度
dfs(l1+1,l2,id-1);
dfs(l1+l+1,id+1,r2);
cout<<a[l1];
}
int main()
{
cin>>a>>b;
int n=a.size();
dfs(0,0,n-1);
return 0;
}