列表

详情


NC14360. 求先序排列

描述

见到暴力的题目要求(这道题是会长出的):
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

输入描述

两行,每行一个字符串,分别表示中序和后序排列

输出描述

一个字符串,表示所求先序排列

示例1

输入:

BADC
BDCA

输出:

ABCD

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 6ms, 内存消耗: 408K, 提交时间: 2022-04-07 20:18:18

#include<bits/stdc++.h>
#define ll long long
using namespace std;
string s1,s2;
void g(int a, int a2, int b, int b2) {
	if(a>a2 || b>b2) return;
	ll i=a;
	while(s1[i]!=s2[b2]) i++;
	cout<<s1[i];
	g(a,i-1,b,b+i-1-a);
	g(i+1,a2,b+i-a,b2-1);
}
int main() {
	cin>>s1>>s2;
	ll n=s1.length()-1;
	g(0,n,0,n);
	return 0;
}

上一题