PAT - 1020 Tree Traversals

PAT-A 1020 Tree Traversals (25 分) 二叉树后中序遍历转按层遍历(C++题解) 1020 Tree Traversals (25 分) 题目传送门:1020 Tree Traversals (25 分) 一、题目大意 给出二叉树的后序遍历和中序遍历,求二叉树的按层遍历。 二、解题思路 要想知道按层遍历的结果,只需要在遍历二叉树的过程中将每个节点的值存到数组对应下标里就行了。通常我们对二叉树的标号都是根节点的下标为1。如果当前点的下标是i,则其左孩子的下标是2∗i2*i2∗i... 阅读详情

Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤30), the total number of nodes in the binary tree. The second line gives the postorder sequence and the third line gives the inorder sequence. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print in one line the level order traversal sequence of the corresponding binary tree. All the numbers in a line must be separated by exactly one space, and there must be no extra space at the end of the line.

Sample Input:

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

Sample Output:

4 1 6 3 5 7 2

思路: 

根据后序遍历和中序遍历对树进行还原,然后层序遍历输出结果。

  1. 后序遍历【左右根】找到根,中序遍历【左根右】划分出左右子树,然后可以递归求解,递归的参数就是后序遍历和中序遍历的左右边界,终止条件是左索引大于右索引。
  2. 通过中序遍历,确定的是左子树节点的数量,利用数量就可以在后序遍历中划分出左右子树。【不是节点具体是什么,也不是节点的顺序,是数量】,区间是左闭右闭的,注意加一减一的问题。
  3. 利用队列,从根节点对树进行遍历,每一个循环要做的事【取出队列中的头节点,然后头节点的子树入队】。
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;

const int maxn = 40;
int post[maxn], in[maxn], level[maxn];
struct treeNode {
	int data;
	treeNode* lchild;
	treeNode* rchild;
};

treeNode* solve(int postL, int postR, int inL, int inR) {
	if (postL > postR)
		return NULL;
	treeNode* root = new treeNode;
	root->data = post[postR];
	int k;
	for (k = inL; k <= inR; k++) {
		if (in[k] == root->data)
			break;
	}
	int leftNumber = k - inL;
	//左子树,post的区间是[postL, postL + leftNumber - 1], in的区间是[inL, k - 1]
	root->lchild = solve(postL, postL + leftNumber - 1, inL, k - 1);
	//右子树,post的区间是[postL + leftNumer, postR - 1], in的区间是[k + 1, inR]
	root->rchild = solve(postL + leftNumber, postR - 1, k + 1, inR);

	return root;
}
int main() {
	int N;
	scanf("%d", &N);
	for (int i = 0; i < N; i++)
		scanf("%d", &post[i]);
	for (int i = 0; i < N; i++)
		scanf("%d", &in[i]);
	treeNode* root = solve(0, N - 1, 0, N - 1);

	queue<treeNode*> Q;
	Q.push(root);
	while (!Q.empty()) {
		treeNode* top = Q.front();
		Q.pop();
		if(top->data == root->data)
			printf("%d", top->data);
		else
			printf(" %d", top->data);
		if (top->lchild != NULL)
			Q.push(top->lchild);
		if (top->rchild!= NULL)
			Q.push(top->rchild);
	}

    return 0;
}

 

FPGA中参数化SPI接口设计与Verilog实现 SPI(串行外设接口)作为嵌入式系统的核心通信协议,通过全双工、高速率特性在FPGA与Flash、ADC等外设交互中占据重要地位。参数化设计通过抽象时钟极性、数据位宽等可配置维度,采用分层架构实现硬件复用,显著提升开发效率。Verilog实现需重点处理跨时钟域同步和可配置帧结构,结合AXI总线集成与UVM验证方法学,可构建适应工业控制、物联网网关等场景的高可靠SPI解决方案。 阅读详情

相关推荐

海光(hygon)CPU ESXI vSphere 紫屏问题修复记录

海光服务器ESXI 紫屏问题修复

edison202302的博客 3563

PAT甲级 1020 Tree Traversals

PAT甲级 1020 Tree Traversals Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order tr...

旺崽的博客 2879

【YOLOv7-环境搭建】PyTorch安装后输出版本显示No module named ‘Torch’的解决方法

【YOLOv7-环境搭建】PyTorch安装后输出版本显示No module named ‘Torch’的解决方法:①检查PyCharm导入的环境是否错误②添加Torch包

qq_59942266的博客 4971

Day45: [PAT甲级] 1020 Tree Traversals (25分)

Day45: [PAT甲级] 1020 Tree Traversals (25分) 题源: 来自PAT甲级题库: https://pintia.cn/problem-sets/994805342720868352/problems/994805485033603072 代码: dirty code凑合看吧 思路就是通过前序遍历和中序遍历直接把树构造好,然后层序遍历。 #include<io...

qq2215459786的博客 159

“华为”云桌面系统声音比较小,如何调大?

调整操作系统声音 开启云桌面,登录账户之后,进入操作系统,鼠标左键点击右下角的声音图标,把声音调到最大(如下图); 可以考虑使用浏览器在线听音乐,确定声音的音量! 如果只是耳麦声音小,可以鼠标右键点击声音图标,选择录音设备(R),如下图: 点击“录音设备(R)”后进入,鼠标右键点击“麦克风”选择属性,将侦听级别调至最大,确定! 调整华为云终端声音(软设置) 将鼠标移至桌面的顶端中间位置,打开如下图的样式图标,鼠标左键点击“主页”; 点击“主页”之后,将回到云桌面的终端操作界面,

shunchang的专栏 2337

GPS数据处理必备:IGS精密星历下载与使用全攻略(附武汉大学/CDDIS/CODE/GFZ地址)

本文为GPS/GNSS数据处理者提供了IGS精密星历的完整下载与使用指南。详细解析了最终、快速、超快速三种精密星历产品的区别与选择策略,并手把手教学如何从武汉大学、CDDIS、CODE、GFZ四大主流数据中心高效获取数据,涵盖文件命名规则解析及自动化下载脚本,助力科研与工程应用。

weixin_29234239的博客 684

PAT 甲级 1020(Tree Traversals )

PAT 甲级 1020题目要求翻译代码思路 题目要求 Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree. Input

qq_42865772的博客 240

从零到一:Qt与PCL的跨平台开发环境搭建全攻略

本文详细介绍了从零开始搭建Qt与PCL跨平台开发环境的完整流程,涵盖Windows、Linux和macOS三大平台。重点解析了Qt5与Qt6版本选择、PCL库安装配置、VTK集成等关键技术要点,并提供跨平台CMake项目模板和常见问题解决方案,助力开发者快速构建三维点云处理应用。

weixin_29280657的博客 384

PAT 1020 Tree Traversals

1020Tree Traversals(25分) Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order ...

树叶子的博客 240

uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应用市场全流程,提供uniApp云打包、离线打包app、原生本地打包,附带APP备案和安卓证书申请

uni-app,安卓,APP,应用商店,打包编译apk,上架到应用市场,如何打包app并发布到主流应用市场,发布为AndroidApp流程,应用备案,如何申请安卓证书,hbuilder发布安卓apk后怎么上传到各家软件商店,创建app证书,uniapp发行原生APP本地打包安卓APK,详细最全的步骤教程,项目打包成apk,云打包,安心打包,安卓app离线打包,一直审核不通过,被拒绝,不符合规范,上架发布失败,申请安卓证书和获取证书信息,uni-app打包发布安卓Android软件到各大应用商店,腾讯应用

🏆 前端领域优质创作者 1万+

RK3588开发笔记-spi扩展canfd芯片MCP2518FD调试笔记

在嵌入式系统开发中,CANFD(控制器局域网灵活数据速率)是一种广泛应用于汽车和工业自动化领域的通信协议。为了满足项目需求,我们在RK3588平台上通过SPI接口扩展了CANFD芯片MCP2518FD,之所以用spi进行canfd扩展,是为了解决原生RK3588原生can不够稳定的问题(发送扩展帧有几率编程标准帧,RK3568/3588均存在该问题)。通过本次调试工作,我们成功地在RK3588平台上扩展了CANFD芯片MCP2518FD,并实现了与CAN总线的稳定通信。

flypig has a dream! 4227

Tree Traversals PAT甲级 1020

PAT甲级 1020 Tree Traversals 输入: 7 2 3 1 5 7 6 4 1 2 3 4 5 6 7 输出: 4 1 6 3 5 7 2 思路整理: 题目要求输入后序遍历序列,和中序遍历序列,首先要弄清这两个序列各自的作用在哪里?后序遍历序列,下面用post[i]进行表示,假设输入n个数。 首先,以整体进行分割,逐步地构造原来的二叉树,post[i]是二叉树的根节点(roo...

vector_huge_gun的博客 191

ArcGIS实验教程——实验二十五:大型商场选址经典案例

本实验基于ArcGIS平台进行商场选址分析,综合考虑道路、居民点、停车场和已有商场四个影响因素。通过缓冲区分析建立各要素的影响范围(道路50米、居民点100米、停车场100米、已有商场500米),采用叠加分析中的相交和擦除运算确定最优选址区域。实验建立了区位评价体系,通过属性赋值(1/-1)和联合运算生成综合评价结果,并实现分级可视化显示。注意事项包括距离参数设置对结果的影响以及正确选择空间分析工具。该流程为商业选址提供了科学的GIS解决方案。

智慧空间实验室 1万+

PAT 甲级 1020  Tree Traversals

1020 Tree Traversals (25 point(s)) Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level...

漫浸天空的雨色的备忘录~ 871

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[PAT-A 1020]Tree Traversals

考察二叉树的遍历 题目大意: 1.给出一颗二叉树的后序遍历序列和中序遍历序列,求这颗二叉树的层序遍历序列 思路: 记后序序列区间[postL,postR],中序序列区间[inL,inR]。 后根序列中的最后一个元素是整个二叉树的根节点,在中序序列中寻找in[k]==post[postR] 则左子树中序序列区间[inL,k-1],左子树个数numLeft=k-inL,则左子树后序序列区间[post...

RegulusF的博客 216

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

PAT 1020 Tree Traversals python

根据后序和中序序列构造二叉树

weixin_46325838的博客 386

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

PAT-ADVANCED1020——Tree Traversals

我的PAT-ADVANCED代码仓:https://github.com/617076674/PAT-ADVANCED 原题链接:https://pintia.cn/problem-sets/994805342720868352/problems/994805485033603072 题目描述: 题目翻译: 1020 树的遍历 假设二叉树节点上的所有值都是不同的正整数。给你一棵二叉树...

清风阁 323

PAT 1020. Tree Traversals

题目:http://pat.zju.edu.cn/contests/pat-a-practise/1020 题解: 题意就是给一个二叉树的后序和中序,然后确定这棵二叉树,然后层序输出这棵树。 主要思路就是通过后序去确定根root,因为后序中根root肯定是在最后一个的,然后通过找到的根root去把中序的划分成两部分,左边的是根root的左子树,右边的是根root的右子树,再递归左子树和右子树

Ted's 游乐园 2274

pat 甲级 1020 Tree Traversals

通过后序遍历找到根的值,然后再到中序序列里找到根的位置再将该树分为左子树与右子树。不断递归即可通过中序和后序重塑一棵树。这道题的思路是先构建二叉树,然后层序遍历二叉树。将问题拆解:1.如何构建二叉树。2.如何测层序遍历二叉树。(2)中序遍历根的左右分左子树和右子树。(1)后序遍历的最后是该树或子树的根。2.bfs层序遍历树。

weixin_50671259的博客 716

PAT甲级刷题--1020 Tree Traversals

本题的要求是根据给出的后续遍历和中序遍历打印出数节点的层次遍历。1.设计数据结构存储 后序遍历和中序遍历的输入。为了解决该问题,我们把步骤问题进行划分。2.设计递归函数根据两种遍历创造二叉树。3.使用队列对创建的二叉树进行层次遍历。

weixin_74147303的博客 186

[Java] PAT甲级 1020 Tree Traversals

想了挺长时间的思路,跟大家分享一下,顺便记录一下自己的学习情况。题意是已知后序和中序要求层序,首先在后序中找到最后一个结点肯定就是根结点,之后以该结点为标准将中序分为左右两部分,这两部分再根据上面的做法即可得到答案。代码如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR...

我的博客 275

PAT甲级 - 1020 Tree Traversals (25 分)

题目链接:PAT甲级 - 1020 Tree Traversals (25 分) Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the...

215

PAT甲级1020 Tree Traversals

本题为简单的树形数据结构问题,根据后续遍历和中序遍历,求出层次遍历。

qq_44641795的博客 248

【PAT甲级 - C++题解】1020 Tree Traversals

📣专栏定位:为想考甲级PAT的小伙伴整理常考算法题解,祝大家都能取得满分!

Newin2020的博客 767
上一篇: PAT - BFS
下一篇: 1053 Path of Equal Weight (30 分)
DedicateToAI
博客等级 码龄9年 6粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值