天梯赛L2-035 完全二叉树的层序遍历

L2-011 玩转二叉树 L2-011玩转二叉树(25分) 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: ... 阅读详情

L2-035 完全二叉树的层序遍历

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 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

我的思路:

关键名词:完全二叉树、后序遍历、层序遍历

1)二叉树的一个编号特点是:若根节点的编号是1的话,左儿子结点的编号是2i(其父亲结点设为i),右儿子结点的编号是2i+1;

2)给了我们后续遍历,我们可以构建一个DFS函数,我感觉里面最少见的是在DFS里面cin读取,首先说一下这个好处,这样可以直接建立编号与数据的联系。那么为什么我们可以用DFS来读取呢?因为我们得知这是一个完全二叉树,而不是其他普通的二叉树,我们得知后序遍历(或是        前序遍历或是中序遍历中的一个)就可以构建出一整个完全二叉树;

献上AC代码:

#include <iostream>
using namespace std;
const int N = 35;
int n;
struct tree{
	int l, r, dat;
	#define l(x) tr[x].l
	#define r(x) tr[x].r
	#define v(x) tr[x].dat
}tr[N];

void build(){
	for(int i = 1; i <= n; i ++){
		if(2*i <= n)	l(i) = 2*i;
		if(2*i+1 <= n)	r(i) = 2*i+1;
	}
}

void dfs(int t){
	if(t > n)	return;
	if(l(t))	dfs(l(t));
	if(r(t))	dfs(r(t));
	cin >> v(t);
}

int main(){
	cin >> n;
	build();
	dfs(1);
	
	for(int i = 1; i <= n; i ++){
		if(i > 1)	printf(" ");
		printf("%d", v(i));
	}
	return 0;
}

思考:

天梯赛L2-006 树的遍历-优快云博客

这两个题都是关于二叉树的题,而它们在这个构建二叉树上有明显的不同。我思考后觉得,这两个不同应该是以下原因:

1)这个题我们已知是完全二叉树,而且只知道后序遍历,所以我们顺着后序遍历的遍历方法去读取数据会比较方便;

2)另一个题我们只知道是二叉树,什么类型的二叉树我们不知道。我们知道了后序遍历和中序遍历,所以从上往下遍历会更加方便;

即:

1.已知:完全二叉树 + 一种遍历(后 / 前 / 中)→ 结构固定,从下往上填值更方便

2.已知:中序 + 后序 / 中序 + 前序,但不知道树形状→ 结构不固定,必须从上往下递归划分区间

【PTA】L2-035 完全二叉树的层序遍历 L2-035 完全二叉树的层序遍历 (25分) 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。 输入格式: 输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。 输出格式: 在一行中输出该树的层序遍历 阅读详情

相关推荐

L2-011 玩转二叉树 (25 分)

给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 输出格式: 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,...

qq_41700374的博客 1333

2020团体程序设计天梯赛L2-3完全二叉树的层序遍历(将后序遍历转换为层序遍历)

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。 输入格式: 输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。 输出格式: 在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得有

beautfullboy的博客 3791

PTA天梯赛L2-035题解:用DFS搞定完全二叉树的后序转层序(附C++代码)

本文详细解析了PTA天梯赛L2-035题,通过DFS算法实现完全二叉树的后序转层序遍历。文章提供了C++代码实现,并深入分析了算法设计思路、正确性验证及性能优化技巧,帮助读者掌握二叉树遍历的核心原理与竞赛实用技巧。

weixin_30731305的博客 299

数据结构与算法28-玩转二叉树

Description 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列。所谓镜面反转,是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 Input 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其中序遍历序列。第三行给出其前序遍历序列。数字间以空格分隔。 Output 在一行中输出该树反转后的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。 Sample Input 7 1 2 3 4 5 6 7 4 1 3

jialChen的博客 1412

团体程序设计天梯赛竞赛题--进阶题【L2-035 完全二叉树的层序遍历】

进阶级 4 道题,每道题 25 分,满分为 100 分。

Pretty Boy Fox的博客 288

【团体程序设计天梯赛】往年关键真题 L2-033 简单计算器 栈 L2-035 完全二叉树的层序遍历 树 详细分析&完整AC代码

完全二叉树采用顺序存储方式,如果有左孩子,则编号为2i,如果有右孩子,编号为2i+1,然后按照后序遍历的方式(左右根),进行输入,最后顺序输出即可。2,将执行计算的最后结果输出。题目保证计算的中间和最后结果的绝对值都不超过 109。本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。个不超过 100 的正整数。直到两个堆栈都为空时,计算结束,最后的结果将显示在屏幕上。

Obliviate的博客 957

【L2-035 完全二叉树的层序遍历】天梯赛L2详解

天梯赛L2详解

weixin_51637957的博客 1407

SRAM compiler选项中 Soft Error Repair (SER)

引起的瞬时故障,可能会影响 SRAM 中存储的数据。SER 功能通过某种机制检测并修复这些错误,从而提高存储器的可靠性。在 SRAM 编译器中,

hzmscut的博客 1154

【天梯赛练习】L2-035 完全二叉树的层序遍历

天梯赛练习L2-035 dfs 完全二叉树

头顶尖尖的博客 595

11种图像清晰度评价函数附MATLAB代码

博主的第一篇博客! 本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数,总计11种。博主之前没有用过MATLAB,完全是本科论文需要,没办法对着别人的代...

kungfu_rabbit的博客 5万+

实战:如何用MIPI CSI-2高效传输RAW10图像数据(附带宽优化技巧)

本文深入探讨了MIPI CSI-2协议在RAW10图像数据传输中的高效应用,详细解析了4像素5字节打包机制及其带宽优化技巧。通过动态Lane分配、位深度自适应压缩和虚拟通道交错传输等实战方法,显著提升传输效率,适用于IoT摄像头开发等低功耗场景。

css33的专栏 732

团体程序设计天梯赛 L2-035 完全二叉树的层序遍历

团体程序设计天梯赛 L2-035 完全二叉树的层序遍历 题目链接 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。 输入格式: 输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。 输出格式: 在一行中

旺崽的博客 4036

高德地图+Three.js实战:手把手教你打造数字农场3D可视化大屏(附完整源码)

本文详细介绍了如何利用高德地图JS API与Three.js技术栈,构建一个功能强大的数字农场3D可视化大屏。文章从技术选型、架构设计出发,深入讲解了坐标对齐、图层管理、性能优化等核心工程实践,并提供了完整的模块化代码示例,旨在为智慧农业及类似场景的3D地理可视化项目提供一套可复用的解决方案。

k8s6orchestrator的博客 890

团体程序设计天梯赛 L2-035 完全二叉树的层序遍历 (25分)

题目 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。 输入格式: 输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。 输出格式: 在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾

一只小蒟蒻的博客 768

快速配置ORCAD导出智能PDF原理图

在OrCAD 中导出类似Altium Designer的智能PDF(即交互式PDF);

QingNing3028的博客 3948

化工设计软件:AutoCAD Plant 3D二次开发_(1).AutoCADPlant3D概述

AutoCAD Plant 3D 是一款专为化工行业设计的三维工厂设计和建模软件。它基于AutoCAD平台,提供了强大的三维建模功能和专业的化工设计工具,帮助工程师和设计师在工厂设计过程中提高效率和准确性。AutoCAD Plant 3D不仅能够创建详细的三维模型,还可以进行管道设计、设备布置、支架设计等复杂任务。通过上述案例,我们可以看出 AutoCAD Plant 3D 在化工厂设计中的强大功能和优势。该软件不仅提供了丰富的建模工具和专业的设计功能,还支持二次开发,使用户能够根据具体需求进行定制化操作。

kkchenjj的博客 1104

团体程序设计天梯赛-练习集 L2-035 完全二叉树的层序遍历

用后序遍历的顺序,反向填充层序数组”通过一次 DFS 模拟后序过程,即可在O(N)时间内完成重建,代码简洁高效,完全符合题目要求。时间复杂度: O(N)O(N)空间复杂度: O(N)O(N)

2501_91263296的博客 340

GEE:使用 CCDC 算法进行连续变化检测和分类

连续变化检测和分类(CCDC)算法是一种广泛应用于遥感数据分析的方法,可以用于检测土地覆盖变化、农作物生长状态的变化以及水资源的变化等。Google Earth Engine是一个强大的云端平台,提供了丰富的遥感数据和工具,可以用于执行各种类型的遥感数据分析。本文将介绍如何使用Google Earth Engine的CCDC算法进行连续变化检测和分类。

养乐多的博客 5679

L2-035 完全二叉树的层序遍历(分数 25)【天梯赛】【数据结构】

题目来源:2020团体程序设计天梯赛题目描述:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是。给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。

weixin_49320014的博客 199

1分钟了解LangChain是什么?

是一个基于大型语言模型(LLM)开发应用程序的框架, 它旨在简化语言模型应用的开发流程,特别是在构建对话系统和其他基于语言的AI解决方案时.目标是将复杂的语言模型技术转化为可通过简单API调用实现的功能,从而使开发者能够更加专注于创造性的解决方案设计。高效地解决了开发大语言模型应用的痛点问题。Langchain 最主要的特色是可以将 LLM 应用研发过程中的交互 Prompt、LLM 模型调用、语言模型与环境互动的自适应等方式融为一体。

gorgor在码农 2630

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

天梯赛 L2-035 完全二叉树的层序遍历 (25 分)

二叉树的遍历主要有三种: (1)先(根)序遍历(根左右) (2)中(根)序遍历(左根右) (3)后(根)序遍历(左右根) 举个例子: 先(根)序遍历(根左右):A B D H E I C F J K G 中(根)序遍历(左根右) : D H B E I A J F K C G 后(根)序遍历(左右根) : H D I E B J K F G C A 模拟 #include <bits/stdc++.h> using namespace std; int n; class node { p

wow_awsl_qwq的博客 904

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

L2-035 完全二叉树的层序遍历 (25 分)-PAT 团体程序设计天梯赛 GPLT

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树。对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树。 给定一棵完全二叉树的后序遍历,请你给出这棵树的层序遍历结果。 输入格式:输入在第一行中给出正整数 N(≤30),即树中结点个数。第二行给出后序遍历序列,为 N 个不超过 100 的正整数。同一行中所有数字都以空格分隔。 输出格式:在一行中输出该树的层序遍历序列。所有数字都以 1 个空格分隔,行首尾不得

柳婼 の blog 1021

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

团体程序设计天梯赛(L2-035 完全二叉树的层序遍历 (25 分))

题目: 思路分析: 完全二叉树的构造性质 代码实现: const int MAX=100101; int n; int a[MAX]; int b[MAX]; int num; void dfs(int pos){ if(pos>n) return; dfs(pos<<1); dfs(pos<<1|1); b[pos]=a[++num]; } int main(){ cin>>n; for(int .

m0_57006708的博客 410

天梯赛里关于树的题目

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。

yzx1572386863的博客 172

面向天梯赛编程(L2):二叉树的遍历

回字有四样写法,你知道么?本文简要介绍了二叉树和四种遍历,及其在天梯赛L2中的应用。

2201_76033853的博客 1446

团体程序设计天梯赛L2题解

由于目前网上容易搜索到的PTA-L2题解写法往往较为复杂,难以跟上最新的XCPC风格,比如链式向前星等方法使用STL库更为简单,本人将大二期间写的一些关于L2的代码作收集,方便大家观看~以后会考虑将每题写上题解的,下次一定一定~有些题目当时拿了23/24飘过的就没补,在下面就不放了~有问题欢迎评论区咨询。

2301_76650919的博客 1303
上一篇: 天梯赛L2-006 树的遍历
下一篇: 天梯赛L2-004 这是二叉搜索树吗?
Ruially
博客等级 码龄1年 60粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值