一场游戏一场空,最终 最初都由我掌控,好像一身从容,不曾有狼狈伤痛,可深夜一个人该如何相拥?
题目描述
二叉树的先序遍历是先访问根结点,再遍历左子树,最后遍历右子树。中序遍历是先遍历左子树,再访问根,最后遍历右子树。
输入
共两行。第1行一个字符串,表示树的先序遍历,第2行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。
输出
仅一行,表示树的后续遍历序列。
样例输入
复制样例数据
abdec dbeac
样例输出
debca
#include <iostream> #include <cstdio> #include <algorithm> #include <string> #include <cstring> #include <cstdlib> #include <cmath> #include <stack> #include <queue> #include <set> #include <map> #include <vector> #include <ctime> #include <cctype> #include <bitset> #include <utility> #include <sstream> #include <complex> #include <iomanip> #define inf 0x3f3f3f3f typedef long long ll; using namespace std; char a[1000],b[1000],c[1000]; int cd1,cd2,k[1000],ct; void dfs(int la,int ra,int lb,int rb) { if(la>ra) return ; int t=k[a[la]]-lb; dfs(la+1,la+t,lb,k[a[la]]-1); dfs(la+t+1,ra,k[a[la]]+1,rb); c[++ct]=a[la]; } int main() { scanf("%s",a+1); cd1=strlen(a+1); scanf("%s",b+1); cd2=strlen(b+1); for(int i=1; i<=cd2; i++) k[b[i]]=i; dfs(1,cd1,1,cd2); for(int i=1; i<=ct; i++) printf("%c",c[i]); return 0; }
数据结构----求后序遍历
最新推荐文章于 2023-09-20 10:34:37 发布