题目描述
树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序, 给定中序和其它一种 遍历的序列就可以确定一棵二叉树的结构。 假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树 的先序遍历字符串。
输入格式
输入共两行,每行是由字母组成的字符串(一行的每个字符都是唯一的), 分别表示二叉树的中序遍历和按层遍历的序列。
输出格式
输出就一行,表示二叉树的先序序列。
样例输入
DBEAC ABCDE
样例输出
ABDEC
#include <bits/stdc++.h>
using namespace std;
string z, c;
void yjc(int a1, int b1, int a2, int b2) {
int i, j, _6_;
for (i = a2; i <= b2; i++) {
_6_ = 0;
for (j = a1; j <= b1; j++) {
if (c[i] == z[j]) {
printf("%c", c[i]);
_6_ = 1;
break;
}
}
if (_6_) break;
}
if (j > a1) yjc(a1, j - 1, 0, b2);
if (j < b1) yjc(j + 1, b1, 0, b2);
}
int main() {
cin >> z >> c;
yjc(0, z.size() - 1, 0, c.size() - 1);
return 0;
}