试题 算法训练 求先序排列

#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
复制的字符数目
返回值
一个子字符串,从其指定的位置开始

posted @ 2022-01-21 12:33  ethon-wang  阅读(68)  评论(0编辑  收藏  举报