https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。

输出格式:

在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

输入样例:

7
1 2 3 4 5 6 7
4 1 3 2 6 5 7

输出样例:

4 6 1 7 5 3 2

代码:

#include <bits/stdc++.h>
using namespace std; const int maxn = 1e5 + 10;
int N;
vector<int> pre, in;
vector<int> level(maxn, -1); void levelorder(int inl, int inr, int root, int index) {
if(inl > inr) return;
int i = inl;
while(i < inr && in[i] != pre[root]) i ++;
level[index] = pre[root]; levelorder(inl, i - 1, root + 1, index * 2 + 2);
levelorder(i + 1, inr, root - inl + i + 1, index * 2 + 1);
} int main() {
scanf("%d", &N);
pre.resize(N);
in.resize(N); for(int i = 0; i < N; i ++)
scanf("%d", &in[i]);
for(int i = 0; i < N; i ++)
scanf("%d", &pre[i]); int cnt = 0;
levelorder(0, N - 1, 0, 0);
for(int i = 0; i < maxn; i ++) {
if(level[i] != -1 && cnt != N - 1) {
printf("%d ", level[i]);
cnt ++;
} else if(level[i] != -1) {
printf("%d", level[i]);
break;
}
}
return 0;
}

 

今天训练赛也是智商被按在键盘上摩擦的一天呢!

PAT L2-011 玩转二叉树的更多相关文章

  1. pat 团体天梯赛 L2-011. 玩转二叉树

    L2-011. 玩转二叉树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜 ...

  2. 团体程序设计天梯赛-练习集L2-011. 玩转二叉树

    L2-011. 玩转二叉树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜 ...

  3. 团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树

    L2-006. 树的遍历 #include <stdio.h> #include <stdlib.h> #include <string.h> #include & ...

  4. L2-011. 玩转二叉树(不建树)

    L2-011. 玩转二叉树   给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整 ...

  5. 【PAT-二叉树】L2-011. 玩转二叉树- 仅仅开100大的数组模拟即可!

    L2-011. 玩转二叉树 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.(我的分析:无非就是说把左子树当成 ...

  6. PAT L2-011 玩转二叉树(二叉树层序遍历)

    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出 ...

  7. 天梯赛 L2-011. (二叉树) 玩转二叉树

    题目链接 题目描述 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格 ...

  8. PAT 甲级 1020 Tree Traversals (二叉树遍历)

    1020. Tree Traversals (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Suppo ...

  9. ACM题目————玩转二叉树

    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出 ...

随机推荐

  1. 解决普通用户登录ulimit 报错问题

    [root@master1 ~]# su - fengjian-bash: ulimit: open files: cannot modify limit: Operation not permitt ...

  2. go标准库的学习-runtime

    参考:https://studygolang.com/pkgdoc 导入方式: import "runtime" runtime包提供和go运行时环境的互操作,如控制go程的函数. ...

  3. solidity学习-cryptoPunks为实例

    在这里使用cryptoPunks为实例来进行solidity的介绍,一般这些内容理解了就能够进行相对简单的智能合约的编写了,同时会添加一些我认为也十分重要的内容学习文档为http://solidity ...

  4. oracle 12c 12.1.0.2.0 BUG 22562145

    Wed May 23 17:46:14 2018TT01: Standby redo logfile selected for thread 1 sequence 42251 for destinat ...

  5. 新手根据菜鸟教程安装docker,从No package docker-io available开始遇到的坑...(转)

    转文地址:https://www.cnblogs.com/maodot/p/7654918.html 新手centos6.9安装docker时从遇到No package docker-io avail ...

  6. P1004 方格取数-洛谷luogu-dp动态规划

    题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A 0 0 0 0 0 0 0 0 ...

  7. WebSockets通信

    WebSockets通信 1. websocket是什么?WebSocket是一种网络通信协议.2. 为什么需要websocket?我们有http协议,为什么还需要websocket协议呢?因为htt ...

  8. linux下打包压缩和解压命令

    .tar 压缩:tar cvf FileName.tar FileName 解压:tar xvf FileName.tar .gz解压1:gunzip FileName.gz解压2:gzip -d F ...

  9. [Synthetic-data-with-text-and-image]

    0 引言 本文是之前为了解决如何将文字贴到图片上而编写的代码,默认是如发票一类的,所以并未考虑透视变换等.且采用的是pygame粘贴方式,之前也尝试过opencv的seamlessClone粘贴. 值 ...

  10. ASP.NET Core中获取完整的URL(转载)

    在之前的ASP.NET中,可以通过 Request.Url.AbsoluteUri 获取,但在ASP.NET Core没有这个实现,请问如何获取呢?方法一:先引用“using Microsoft.As ...