1339:求后序遍历
目录
前言
【题目描述】
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
【输入】
共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。
【输出】
一行,表示树的后序遍历序列。
【输入样例】
abdec
dbeac
【输出样例】
debca
方法一:
#include<bits/stdc++.h>
using namespace std;
string a,b;
void dfs(int l1,int r1,int l2,int r2)
{
int k=b.find(a[l1]);
if(k>l2)dfs(l1+1,l1+k-l2,l2,k-1);
if(k<r2)dfs(l1+k-l2+1,r1,k+1,r2);
cout<<a[l1];
}
int main()
{
cin>>a>>b;
dfs(0,a.length()-1,0,b.length()-1);
return 0;
}
方法2:
#include<bits/stdc++.h>
using namespace std;
void dfs(string a,string b){
if(a.size()==0)return;
char root =b[0];
int i=a.find(root);
dfs(a.substr(0,i),b.substr(1,i));//lift tree
dfs(a.substr(i+1),b.substr(i+1));//right tree
cout<<root;
}
int main()
{
string x,y;
cin>>x;
cin>>y;
dfs(x,y);
return 0;
}
本文来自博客园,作者:I'm_江河湖海,转载请注明原文链接:https://www.cnblogs.com/jhhh/p/16760631.html