蓝桥 - 求先序排列(知中序和后序求先序)

Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

Input

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

Output

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

Sample Input

BADC
BDCA

Sample Output

ABCD
 1 #include <bits/stdc++.h>
 2 const int INF=0x3f3f3f3f;
 3 typedef long long LL;
 4 const double eps =1e-8;
 5 const int mod=1e9+7;
 6 const int maxn=1e5+10;
 7 using namespace std;
 8
 9 string a;
10
11 void solve(string b,string c)
12 {
13     string b1,b2,c1,c2;
14     int lenb=b.size();
15     int lenc=c.size();
16     a+=c[lenc-1];
17     int pos=b.find(c[lenc-1],0);
18     b1=b.substr(0,pos);
19     b2=b.substr(pos+1,(lenb-pos-1));
20     c1=c.substr(0,pos);
21     c2=c.substr(pos,(lenb-pos-1));
22     if(b1.size()&&c1.size()) solve(b1,c1);
23     if(b2.size()&&c2.size()) solve(b2,c2);
24 }
25
26 int main()
27 {
28     #ifdef DEBUG
29     freopen("sample.txt","r",stdin);
30     #endif
31
32     string b,c;
33     cin>>b>>c;
34     solve(b,c);
35     cout<<a<<endl;
36
37     return 0;
38 }

-

原文地址:https://www.cnblogs.com/jiamian/p/12578709.html

时间: 2024-10-10 15:11:14

蓝桥 - 求先序排列(知中序和后序求先序)的相关文章

二叉树--已知先序中序求后序--已知中序后序求先序(基本按照网上某大神思路搬过来的)

思路来自(转载自)  http://www.cnblogs.com/fzhe/archive/2013/01/07/2849040.html 题目描述不说了. 前序遍历:  GDAFEMHZ 中序遍历:  ADEFGHMZ 求中序遍历. 1 确定根,确定左子树,确定右子树. 2 在左子树中递归. 3 在右子树中递归. 4 打印当前根. 代码如下: 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 char pr[1000],in[100

javascript reverse()反序排列数组中的元素

javascript reverse()可以颠倒数组中元素的顺序,该方法会改变原来的数组,而不会创建新的数组 <!DOCTYPE html> <html> <head> <title>Runde</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="tex

洛谷 P1030 求先序排列 Label:None

题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输出格式: 1行,表示一棵二叉树的先序. 输入输出样例 输入样例#1: BADC BDCA 输出样例#1: ABCD 代码 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 #inclu

二叉树系列(二):已知中序遍历序列和后序遍历序列,求先序遍历序列

前面已经介绍过三种遍历方法的规则,为了大家看着方便,这里我们在重新介绍一遍: 1.先序遍历 (1)访问根结点: (2)先序遍历左子树: (3)先序遍历右子树.  2.中序遍历 (1)中序遍历左子树: (2)访问根结点: (3)中序遍历右子树. 3.后序遍历 (1)后序遍历左子树: (2)后序遍历右子树: (3)访问根结点. 知道了二叉树的三种遍历规则,只要有中序遍历序列和前后任一种遍历序列,我们就可以求出第三种遍历序列,今天我们研究的是已知中序和后序遍历序列,求先序遍历序列. 已知该二叉树的中序

luogu1030 求先序排列

https://www.luogu.org/problemnew/show/1030 题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输出格式: 1行,表示一棵二叉树的先序. 输入输出样例 输入样例#1: BADC BDCA 输出样例#1: ABCD 1 #include<cstdio> 2 #include<string>

算法训练 求先序排列

问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所求先序排列 样例输入 BADC BDCA 样例输出 ABCD 1 import java.math.BigInteger; 2 import java.util.Arrays; 3 import java.util.Scanner; 4 5 6 public class Main { 7 static S

codevs 1013 求先序排列(二叉树遍历)

传送门 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). Input 两个字符串,分别是中序和后序(每行一个) Output 一个字符串,为二叉树的先序序列 Sample Input BADC BDCA Sample Output ABCD 思路 我们知道,前序遍历(PreOrder):根节点->左子树->右子树:中序遍历(InOrder):左子树->根节点->右子树:(PostOrder)后序遍历:左

codevs 1013 求先序排列 2001年NOIP全国联赛普及组 x

题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入描述 Input Description 两个字符串,分别是中序和后序(每行一个) 输出描述 Output Description 一个字符串,先序 样例输入 Sample Input BADC BDCA 样例输出 Sample Output ABCD 数据范围及提示 Data Size & Hint 分类标签 Tags 点此展开 #include<

求先序排列

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入描述 Input Description 两个字符串,分别是中序和后序(每行一个) 输出描述 Output Description 一个字符串,先序 样例输入 Sample Input BADC BDCA 样例输出 Sample Output ABCD 数据范