试题 算法训练 求先序排列
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
void beford(string in, string aft) {
if (in.size() > 0) {
char ch = aft[aft.size() - 1];
cout << ch;
int k = in.find(ch);
// printf("%d\n",k);
// cout<< in.substr(0, k)<<endl;
// cout<<aft.substr(0, k)<<endl;
// cout<<in.substr(k+1)<<endl;
// cout<<aft.substr(k,in.size()-1-k)<<endl;
beford(in.substr(0, k), aft.substr(0, k));
beford(in.substr(k+1),aft.substr(k,in.size()-1-k));
}
}
int main() {
string inorder, aftorder;
cin >> inorder >> aftorder;
beford(inorder, aftorder);
cout << endl;
return 0;
}
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式
两行,每行一个字符串,分别表示中序和后序排列
输出格式
一个字符串,表示所求先序排列
样例输入
BADC
BDCA
样例输出
ABCD
basic_string::substr
basic_string substr(size_type _Off = 0,size_type _Count = npos) const;
参数
_Off
所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0。
_Count
复制的字符数目
返回值
一个子字符串,从其指定的位置开始