Description

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 ≤8≤8)。

Input

共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

Output

共一行一个字符串,表示一棵二叉树的先序。

Sample 1

Inputcopy

Outputcopy

BADC

BDCA

ABCD

#include<iostream>
using namespace std;
string a,b;
void dfs(int xl,int xr,int yl,int yr){
if(xl>xr||yl>yr)return ;
int t=a.find(b[yr]);
cout<<a[t];
dfs(xl,t-1,yl,yl+t-xl-1);
dfs(t+1,xr,yl+t-xl,yr-1);
}
int main(){
cin>>a>>b;
dfs(0,a.size()-1,0,b.size()-1);
return 0;
}

上述题目为已知中序和后序排列求先序排列,可以进行相关扩展:

已知中序和先序排列求后序排列:

#include<iostream>
using namespace std;
string a,b;
void dfs(int xl,int xr,int yl,int yr){
if(xl>xr||yl>yr)return ;
int t=a.find(b[yl]);
dfs(xl,t-1,yl+1,yl+t-xl);
dfs(t+1,xr,yl+1+t-xl,yr);
cout<<a[t]; }
int main(){
cin>>a>>b;
dfs(0,a.size()-1,0,b.size()-1);
return 0;
}

洛谷 - P1030 求先序的更多相关文章

  1. 二叉树的遍历 &【NOIP2001普及组】& 洛谷 P1030 求先序排列

    题目链接 https://www.luogu.org/problemnew/show/P1030 模板题 先讲一下二叉树的遍历 二叉树的遍历 分类 性质 求法 分为三类: 先序遍历(PreOrder) ...

  2. 洛谷 P1030 求先序排列 Label:None

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  3. 洛谷P1030求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度≤8. 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输 ...

  4. 洛谷 P1030 求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  5. 洛谷——P1030 求先序排列

    https://www.luogu.org/problem/show?pid=1030#sub 题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...

  6. 洛谷:P1087 FBI树 P1030 求先序排列 P1305 新二叉树

    至于为啥把这三个题放到一起,大概是因为洛谷的试炼场吧,三道树的水题,首先要理解 先序中序后序遍历方法. fbi树由于数量小,在递归每个区间时,暴力跑一遍区间里的数,看看是否有0和1.至于递归的方法,二 ...

  7. P1030 求先序排列 /// 二叉树的遍历

    题目大意: 给一棵树的中序排列 后序排列,求这棵树的先序排列 https://www.luogu.org/problemnew/show/P1030 二叉树的四种遍历解说 几种遍历的递归实现 后序排列 ...

  8. P1030 求先序排列 P1305 新二叉树

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度\le 8≤8). 输入输出格式 输入格式: 22行,均为大写字母组成的字符串,表示一棵二叉树的中序与 ...

  9. P1030 求先序排列

    题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...

  10. P1030 求先序排列 (一个非常棒的写法)

    理论正确就是真正的正确,误... 就是找嘛,找到每一个对应字符,然后对应的左右子树的区间,然后就可以了. #include <bits/stdc++.h> using namespace ...

随机推荐

  1. 网络安全(中职组)-B模块:Web安全渗透测试

    Web安全渗透测试任务环境说明: 服务器场景:PYsystem003(关闭链接)服务器操作系统:未知用户名:未知 密码:未知 1.    通过浏览器访问http://靶机服务器IP/1,对该页面进行渗 ...

  2. java异常--自定义异常

    java异常--自定义异常 步骤: 创建自定义异常类. 在方法中通过throw关键字抛出异常对象. 处理异常try-catch 捕获并处理,否则在方法声明处通过throws关键字指明抛出给调用者的方法 ...

  3. React的组件化/工程化开发(脚手架)

    脚手架: create-react-app 安装脚手架: $ npm i create-react-app -g 检查安装: $ npm create-react-app --version 新建项目 ...

  4. [nefu]C++程序设计与分析实验 - 锐格

    [nefu]C++程序设计与分析实验 - 锐格 第二章 C++基础 5330 #include<iostream> #include<iomanip> using namesp ...

  5. Ceres 自动求导解析-从原理到实践

    Ceres 自动求导解析-从原理到实践 目录 Ceres 自动求导解析-从原理到实践 1.0 前言 2.0 Ceres求导简介 3.0 Ceres 自动求导原理 3.1 官方解释 3.2 自我理解 4 ...

  6. [VMware/CENOTS/Linux]VMware设置CentOS7共享文件夹[转载]

    0 环境信息 VMWare: Linux CENTOS: 7.9.2009(Core) CPU: x86_64 / amd64 待共享的共享文件夹的物理路径: E:\VirtualMachine\sh ...

  7. Android开发_记事本(1)

    一些知识 Textview TextView中有下述几个属性: id:为TextView设置一个组件id,根据id,我们可以在Java代码中通过findViewById()的方法获取到该对象,然后进行 ...

  8. Junit5 pom依赖

    <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter- ...

  9. SSH: Linux开启ssh并启动root登录设置默认密码

    apt update && apt install -y openssh-server echo "PermitRootLogin yes" >> /e ...

  10. 【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    简介 观察者模式(Observer Pattern)是一种行为型模式.它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 观察者模式使用三个类S ...