二叉树的遍历与根据遍历序列求二叉树

news2024/9/23 23:34:11

二叉树的遍历:

1、先序遍历:DLR

2、中序遍历:   LDR

3、后序遍历:   LRD

(L表示遍历左子树,D表示遍历根结点,R表示遍历右子树)

以下图举例说明:

以先序遍历为例:

1、因为先序遍历的规则为DLR,所以先遍历根结点,得出根结点为A,

     随后遍历以A为中心分为左右两部分,左边为BEL,右边为DHJMI

    因为为DLR,所以遍历为根结点接下来就是L,即BEL

2、然后将BEL看成一个二叉树以B为根结点继续使用DLR的遍历规则,

      像1中一样以B为中心分为左右两部分,左边为EL,右边为空

      然后以E为根结点继续使用DLR的规则,得EL

       所以左边的排序为ABEL

3右边部分的遍历顺序和上面的步骤一样,只不过因为DLR原因其

      遍历出来的排序要排在左边遍历完的后面

最终结果为:ABELDHMIJ

图示过程:

遍历的过程主要是将其对应的遍历规则结合整体和拆分的观点去看,就如上述例子一样其遍历的规则为DLR,所以开始将整个二叉树看成一个整体,可将其分成D、L、R三部分,然后根据该规则紧接着取遍历拆分出来L部分,然后继续向开始一样去遍历直到拆分出来的部分都为3个单个结点为止。

中序遍历和后序遍历原理和上述都是相同的只是遍历的规则不同而已

上述例子:

中序遍历的结果:ELBAMHIDJ

后序遍历的结果:LEBMIHJDA         

根据遍历序列求二叉树

1、已知先序遍历和中序遍历

2、已知后序遍历和中序遍历

注:(只有上述两种情况可求出)

两种方法的逻辑思路大致相同,学会一种另种也就可以秒懂了

这里以,已知先序遍历和中序遍历来举例说明

借用一下上面所求出的先序、中序遍历

先序(DLR):ABELDHMIJ

中序(LDR):ELBAMHIDJ

第一步:从先序中找出根结点,即A

第二步:在中序中以确定的根结点将结点分为左右两边,即左边:ELB ,右边:MHIDJ

第三步:将左右两边划分的结点依次重复上面两步即可

图示过程   

总述:

先序和后序都是判断这些结点的根,而中序则是配合找出的根将这些结点分为左右子树

在先序中排在前面结点的则为其对应部分的根,后序则相反

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直击Vue2/3watch的底层逻辑,字符串长度对侦听效率的影响

目录 直击Vue2/3watch的底层逻辑,字符串长度对侦听效率的影响 一、Vue 2的底层原理 二、Vue 3的底层原理 三、基础类型性能消耗 四、数据变化比较原理 1、Vue 2 中的引用类型比较 2、Vue 3 中的引用类型比较 3、字符串比较(基础类型比较&#xf…

数据结构(学习)2024.8.6(顺序表)

今天开始学习数据结构的相关知识,大概分为了解数据结构、算法;学习线性表:顺序表、链表、栈、队列的相关知识和树:二叉树、遍历、创建,查询方法、排序方式等。 目录 一、数据结构 数据 逻辑结构 1.线性结构 2.树…

土压力计的基本工作原理:振弦式土压力计的奥秘

在土木工程、地质勘探及地下结构工程中,土压力计作为一种重要的监测设备,扮演着至关重要的角色。它能够实时、准确地测量土体内部的压力变化,为工程的安全性和稳定性提供可靠的数据支持。其中,振弦式土压力计以其高精度、稳定性好…

20-导线及NetLabel的添加

1.放置电气导线:ctrlw 2.放置网络标签

FCBFormer复现

表1 Kvasir-SEG复现结果:mDice:0.93846,mIoU:0.890299,mPrec.:0.945872,mRec.:0.940086 CVC-ClinicDB复现结果:mDice:0.946874,mIoU:0…

【Math.NET】使用Fit.Polynomial多项式拟合(直线、抛物线)的示例代码与示意图

介绍 Math.NET是一个开源项目:https://www.mathdotnet.com/,旨在构建和维护涵盖基础数学的工具箱,以满足 .NET开发人员的高级需求和日常需求。 关于Math.NET用法的参考博客: https://www.cnblogs.com/dino623/p/curve_fitting_a…

Canvas-Editor 基于canvas/svg的富文本编辑器

前言 哎,最近逛论坛,看的文章,真是水的一批,且不说水平咋样,有些结论、方法都是错的,不符合前端模块化、工程化规范,自己写写demo,觉得成功了,恨不得马上分享写博客&…

我的JavaScript异常监控策略:保护前端应用免受错误的困扰!

在上一篇文章如何及时发现网页的隐形错误中我们讲了,前端有哪些常见的异常,以及如今监控获取这些异常的方法,今天我们就来讲讲我是如何来监控我的JavaScript异常的。 背景 浏览器侧的异常分为两种类型 JavaScript 错误,一般来自…

为什么在网页编辑文字时键盘输入换行要停顿一下 网页才显示

事情的起因: 不知道从什么时候开始,在浏览器上编辑文字时,换行操作总是延迟响应,但点击空格网页响应速度正常。时间长了也习惯了,可能觉得本来就是这样吧,网页编辑可能不稳定,加上自己使用的是蓝…

结构体structure、共用体union

结构体 结构体类型——用来描述复杂数据的一种数据类型 构造类型(用户自定义类型) struct 结构体类型名 { 成员列表; }; struct关键字:表明是在构造一个结构体的类型 结构体名:用来描述结构体这个类型的一个名称 成员列表&…

JavaWeb系列十一: Web 开发会话技术Session

Web 开发会话技术Session Session有什么用session基本原理session原理示意图session可以做什么如何理解Session Session常用方法Session底层实现机制原理分析图应用实例session实现原理动画 Session生命周期Session生命周期说明Session生命周期实例 作业布置 Session有什么用 …

8.9 C++

1.思维导图 2. 搭建一个货币的场景,创建一个名为 RMB 的类,该类具有整型私有成员变量 yuan(元)、jiao(角)和 fen(分),并且具有以下功能: (1)重载算术运算符…

书生大模型实战营第三期_L2-LMDeploy 量化部署进阶实践(81班1101作业)

大模型的痛点 大模型的计算量是非常大的 2. 显存的相应区域是非常大的 3.访存瓶颈 GPU的大部分时间都花在数据交换上面不断拉高batchsize,不断地提高计算的访存比是不是会有较好的效果呢?这是一个很好的想法,但是显存不够就会很尴尬为了能…

【youcans动手学模型】YOLO5 实战(中)训练目标检测模型

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans YOLO5 实战 (上)环境配置与测试 【youcans动手学模型】YOLO5 实战(中)使用自己的数据集训练目标检测模型 1. 准备训练数据集1.1 开源数据集1.2 YOLOv5 …

k8s1.18.0完整部署教程

k8s的官网地址:https://kubernetes.io/docs Kubernetes 也称为 K8s,是一个开源系统,用于自动化容器化应用程序的部署、扩展和管理。 K8s通过各种资源对象来管理pod相关的功能,借助pod本身的功能实现大规模容器应用的自动化管理&…

享界S9+问界M9,华为智选车的高端局

作者 |老缅 编辑 |德新 8月6日,鸿蒙智行在北京发布D级纯电旗舰轿车,也是北汽 - 华为智选车合作的第一款车型,享界S9。 享界S9搭载了包括华为乾崑ADS 3.0在内的多项首发技术,全系标配100kWh华为800V巨鲸电池。 而在价格上&#…

mysql⑥:约束

一,概念 例子: 外键约束 例子: 外键的删除和更新

从商业角度分析,充电桩还能赚钱吗?

一、投入与产出 1、投入 是建设成本,包括设备(箱变、充电设备、电缆等)、土建和配套(雨棚、照明、监控等)。二是运营成本,包括租金、人工、电损等。 2、产出 充电手续费以及增值服务(停车费…

力扣高频SQL 50题(基础版)第三十八题之1484.按日期分组销售产品

文章目录 力扣高频SQL 50题(基础版)第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十八题 1484.按日期分组销售产品 题目说明 表 Activities: ---…

shell的条件测试

为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句,例如判断语句和循环语句中发挥了重要的作用,所…