题目:
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。

给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。

输入格式:
输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。

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

输入样例:

8
91 71 2 34 10 15 55 18

输出样例:

18 34 55 71 2 10 15 91

题目就是讲述了什么是完全二叉树:完美二叉树就是满二叉树。完全二叉树:只有倒数第一层和倒数第二层的结点的度数可以小于2,并且倒数第一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。

懂了什么是完全二叉树,接下来就是模拟二叉树的后序遍历(假设A,B是完全二叉树,题目给了A树的后序遍历序列(只知道序列,不能直观的知道对应节点编号的数据),B先看成是空树,然后用B树去模拟后序遍历过程,在过程中填入A树的后序遍历序列数据,A树的形状以及对应节点编号的数据就在B树上得到了还原,还原的B树按节点编号从1到n输出数据就是层序遍历的结果)。想的时候用树形去想,做 我是用数组表示B树,根节点编号为1,递归模拟后序遍历。

不懂再看这里:如果二叉数节点编号从1~n编号,层序遍历访问到的编号就是从1~n。用数组模拟后序遍历序列,就是模拟节点编号的访问次序。那我用题目给的后序遍历数据依次对应模拟的访问编号,就可以还原这棵n个节点的完全二叉树上每个节点编号对应的数据(仅限完全二叉树:并且倒数第一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树)。

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 30+5;
#define inf 0x3f3f3f3f
#define mod 998244353
#define pre(a,b,c) for(int a=b;a<c;a++)
#define pres(a,b,c) for(int a=b;a<=c;a++) int r;
int tree[N];
int n;
void FF(int id,int *a) {
if(id > n) return;
FF(id<<1,a);
FF(id<<1|1,a);
tree[id] = a[++r];
}
int main() {
cin>>n;
int a[N];
for(int i = 1;i <= n;i++) {
cin>>a[i];
}
FF(1,a);
for(int i = 1;i <= n;i++) {
cout<<tree[i];
if(i!=n) cout<<' ';
}
}

2020天梯赛总决赛L2-3 完全二叉树的层序遍历 (25分)的更多相关文章

  1. 天梯赛练习 L3-010 是否完全二叉搜索树 (30分) 数组建树模拟

    题目分析: 本题的要求是将n个数依次插入一个空的二叉搜索树(左大右小,且没有重复数字),最后需要输出其层次遍历以及判断是否是完全二叉搜索树,通过观察我们发现, 如果这个树是用数组建立的,那么最后输出的 ...

  2. 2020年团体程序设计天梯赛-总决赛 L2-4 网红点打卡攻略

    题目:一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略" ...

  3. 天梯赛练习 L3-016 二叉搜索树的结构 (30分)

    题目分析: 用数型结构先建树,一边输入一边建立,根节点的下标为1,所以左孩子为root*2,右孩子为root*2+1,输入的时候可用cin输入字符串也可用scanf不会超时,判断是否在同一层可以判断两 ...

  4. PAT A1155 Heap Paths (30 分)——完全二叉树,层序遍历,特定dfs遍历

    In computer science, a heap is a specialized tree-based data structure that satisfies the heap prope ...

  5. PAT A1147 Heaps (30 分)——完全二叉树,层序遍历,后序遍历

    In computer science, a heap is a specialized tree-based data structure that satisfies the heap prope ...

  6. PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)

    L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...

  7. 【CCCC天梯赛决赛】

    cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...

  8. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

  9. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

随机推荐

  1. CodeForces 1093F Vasya and Array

    题意 给一个长度为 \(n\) 的整数序列 \(a\),其中 \(a_i\) 要么为 \(-1\),要么为 \(1\sim k\) 中的整数. 求出将所有 \(-1\) 替换为 \(1\sim k\) ...

  2. 云计算管理平台之OpenStack Web管理工具dashboard

    在上一篇博客中,我们成功的基于两种网络启动虚拟机:这意味着openstack的核心服务都搭建完成,并正常运行着:有关启动虚拟机实例请参考上一篇博客:今天我们来了解下,基于一个web界面图形工具来管理o ...

  3. 系统日志报错i8042prt无法加载

    原因如下: 解决方法为: 此报错可以直接忽略,不过由此可能导致即插即用(plugplay)报错,在即插即用报错时,重启服务器即可.

  4. 设计Twitter 时间线

    「design Twitter」是 LeetCode 上第 335 道题目,不仅题目本身很有意思,而且把合并多个有序链表的算法和面向对象设计(OO design)结合起来了,很有实际意义,本文就带大家 ...

  5. JNI-Thread中start方法的调用与run方法的回调分析

    前言 在java编程中,线程Thread是我们经常使用的类.那么创建一个Thread的本质究竟是什么,本文就此问题作一个探索. 内容主要分为以下几个部分 1.JNI机制的使用 2.Thread创建线程 ...

  6. 寻找性能更优秀的动态 Getter 和 Setter 方案

    反射获取 PropertyInfo 可以对对象的属性值进行读取或者写入,但是这样性能不好.所以,我们需要更快的方案. 方案说明 就是用表达式编译一个 Action<TObj,TValue> ...

  7. PS零基础入门教程--裁剪工具用法

    我是IT轩,分享一下我使用PS的一些用法,希望对大家有帮助!欢迎关注微信公众号:笑林新记 PS版本:PS CC 2019 主要技术:裁剪工具. 裁剪工具主要有:裁剪工具.透视裁剪工具.切片工具和切片选 ...

  8. 9.mysql性能优化-慢查询分析、优化索引和配置

    目录 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 max_connections ...

  9. 从比心APP源码的成功,分析陪玩系统源码应该如何开发

    提起游戏陪玩系统,相信大家都不陌生.作为一名骨灰级的手游玩家,小编对于陪玩系统源码也有些了解.在互联网络发展愈发迅速的今天,游戏产业在一中领域中脱颖而出,据统计,手机游戏用户已经达到5.29亿,较20 ...

  10. 凝思磐石安全系统V6.0.8版本(debian)增加多于4个串口方法

    在网上找了好多方法,大家基本上都用ubuntu系统做实现演示,里面的有些文件我在凝思系统上根本找不到,最终通过摸索已解决,记录下操作过程(整个过程都需要在root用户下进行): 判断系统目前能识别的串 ...