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... 阅读详情

题目的目的是很简单明了的,就是给定一棵二叉树的后序序列和中序序列,要求我们给出层次遍历的序列。

本题的关键点在于二叉树的重建和层次遍历。

本题是利用后序序列和中序序列来进行二叉树的重建,参考函数如下:

Node * rebuild(int *post,int *in,int len )
{ 
    if(len == 0) 
        return NULL; //判断是否为空树
    int i=len-1; 
    while(post[len-1] != in[i])i--;//查找根节点的位置
    Node *p1;
    p1=new Node; 
    p1->data=post[len-1]; 
    p1->left=rebuild(post,in,i);//左子树的重建 
    p1->right=rebuild(post+i,in+i+1,len-i-1); //右子树的重建
    return p1; 
} 
关于层次遍历,小编借鉴了下课件,运用的是循环数组来实现:

void levelorder(Node *p)
{
	Node *q,*circle[MaxSize];   //建立循环数组
	int front=-1,rear=0,flag=0;
	circle[rear]=p;
	while(front!=rear)
	{
		front=(front+1)%MaxSize;
		q=circle[front];
		if(flag==0)//用来判断是否为根节点
		{
			flag=1;
			printf("%d",q->data);
		}
		else
			printf(" %d",q->data);
		if(q->left!=NULL )
		{
			rear=(rear+1)%MaxSize;
			circle[rear]=q->left;
		}
		if(q->right!=NULL)
		{
			rear=(rear+1)%MaxSize;
			circle[rear]=q->right;
		}
	}
}
总结:

最近做题目挺适合提高自己的编程能力的,所以开始写写博文记录下自己的成长,一方面自己可以回头看看编写过的代码回顾算法的等,另一方面也可以跟大家一起分享下,由于小编编程能力尚属中下,望众大牛勿喷。有优化的方法或建议恳请大家留言,小编很希望能持续提升自己的编程水平。


ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析 本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。 阅读详情

相关推荐

Centos7安装Tesseract5.5.0+SpringBoot集成部署(离线版)

Java 中实现 OCR(光学字符识别)功能,可以使用 Tesseract OCR,这是一个开源的 OCR 引擎,支持多种语言,并且可以在 Java 中通过 Tesseract API 进行集成。

Leopard锋的博客 2320

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...

旺崽的博客 2878

周立功CAN盒二次开发实录:用QT5.1.0解析汽车CAN报文(附数据可视化技巧)

本文详细介绍了基于QT5.1.0和周立功USBCAN-E-U设备进行汽车CAN总线二次开发的实战过程。核心内容包括利用CANdb++数据库解析原始报文并转换为物理值,以及通过QCustomPlot库实现高性能实时数据可视化,为车载诊断与车联网开发提供了一套完整的工程实践方案。

sugar的博客 1057

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

PX4算法解析:L1制导律

一、前沿 从今天开始,会陆续为大家解读开源飞控软件px4中使用到的各种算法,今天要讲述的是L1制导律,这是固定翼飞机进行路径跟踪的重要算法之一。这个算法是由MIT的研究人员提出,因为具有比较好的路径跟踪效果而得到广泛应用。在这之前,无人机在进行路径跟踪时一般采用基于侧偏距的PD控制器方法,至于为什么使用PD而不使用PID算法,那是因为位置环响应较慢,所以一般在外环采用PD算法,而在内环采用PID算...

weixin_44616080的博客 8253

有限元法(Finite Element Method,FEM)原理详解

有限元法( FEM )是一种流行的方法,用于数值求解工程和数学建模中出现的微分方程。

车手只需要车和手,压力来自轮胎 7万+

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

ML307R OpenCPU TCP使用

实现现象 平台下发数据,板子在收到数据之后,马上再发送到平台,通过串口助手可以看到已经接收到数据。ML307R TCP 是使用LWIP的标准的socket通信,具体TCP流程可以自行百度。实验目的:实现把接收的数据再发送到服务端。因为是4G,所以必须用外网的。

面朝大海春暖花开 2232

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

Unity 之jenkins自动打包

1.Jenkins 是什么? jenkins官方网址:https://www.jenkins.io/zh/ Jenkins是一款开源 CI&CD(持续集成&持续部署) 软件,用于自动化各种任务,包括构建、测试和部署软件。 简易安装:Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统。Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。 插件扩展:通过更新中心中的

TxNet 2132

月薪30k+的工业视觉,必备Java+YOLO技能(工业级落地全拆解)

30k+工业视觉岗的核心不是算法调参,而是用Java把YOLO落地到工业场景的能力——稳运行、能对接、可管理是高薪的核心壁垒;必备技能分五层:模型工业级适配、Java推理核心、SpringBoot后端、工业部署运维、场景适配,每层都要练到“能落地、能讲清、能避坑”;学习路径的核心是“实战驱动”:不要只学理论,从一个完整的工业项目(如锂电缺陷检测)入手,练完就能对标高薪岗。

2601_94871597的博客 524

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

芒果YOLOv8改进160:姿态估计Head篇:即插即用|轻量化非对称多级压缩LOADH旋转检测头,原创改进适配YOLOv8高效检测头,检测头新颖改进,全网首发独一份

芒果YOLOv8改进159:OBB旋转检测头Head篇:即插即用|轻量化非对称多级压缩LOADH旋转检测头,原创改进适配YOLOv8高效检测头,检测头新颖改进,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 811

[PAT-A 1020]Tree Traversals

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

RegulusF的博客 216

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PAT 1020 Tree Traversals python

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

weixin_46325838的博客 386

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PAT 1020. Tree Traversals

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

Ted's 游乐园 2274

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

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

weixin_74147303的博客 186

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

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

weixin_50671259的博客 715

PAT甲级1020 Tree Traversals

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

qq_44641795的博客 248

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

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

Newin2020的博客 766

[Java] PAT甲级 1020 Tree Traversals

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

我的博客 275
上一篇: PAT 1004 Counting Leaves
下一篇: [Ubuntu]:linux下root账户忘记密码怎么办
chamsu
博客等级 码龄14年 78粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值