11.2树的高度,表达式树,非递归遍历,层序遍历,奇偶树

news2024/11/26 16:55:57

课上

前序,根左右

中序,左根右

若前序中序相同,则树都没有左节点

求树的高度

表达式树

中缀表达式树

主要考虑括号问题

这个就是考虑递归底层,要结束时的情形;以及根节点的情形;

由于表达式树是满树,不会出现度为1的结点,所以要么是叶子结点,即递归的终点;

要么是有两个孩子的父节点,递归输出左右子树

非递归实现前序遍历

非递归,就是用栈结构模拟,先进后出

每次循环都干了两件事,第一件事是先沿左分支一直往下走,直到走不下去,并且把沿途的结点都记录到栈中;第二件事就是左不下去了,然后重新赋值为最后一个左节点,并且把其从栈里取出来,然后尝试得到它的右节点,得到右结点后,不在本层迭代中用,而是在下次迭代中用。

第一件事的终止条件说的是该结点为空,即遍历到的为叶子结点,它结束的时候,指针结点一定是空结点,即一定访问到了最底层,所以第二件事的if里,第一步就是重新把栈的顶部元素赋值给结点,但是一定不要让栈里元素再次回到循环里,否则就会形成死循环,所以无论有没有右孩子,都要把那个栈顶结点的右孩子赋值给树结点,如果有右孩子,那么就是接着先序遍历其右孩子,如果没有,在下次循环里就不会继续进行,而是得到下一个栈顶元素,即开始往回遍历找右孩子了

后续的非递归

第二种思想就是根据非递归的前序得到非递归的后序

前序:根左右  后续:左右根

后序的反转为,根右转左转。

右转就是说它右子树里面也都反转了,就是递归进行反转,向下多层都进行了反转,而不是只在最外层进行了一次反转。

所以用非递归前序就是非递归进行前序遍历时,先遍历右子树,再遍历左子树,就是位置交换了一下,这样就得到了后序的反转序列,再反转一次,就得到了通过非递归前序实现的非递归后序序列

层序遍历树

检验奇偶树

1.层序

就是建立两个队列,两个队列中的元素一一对应,其实可以用一个结构体(即树结点与其深度组成)队列

2.深度

用且的关系,即左右必须都得是奇偶树才行

额外要求

1.层序

2.dfs

层序遍历对每一层的结点是从左到右,深度优先也是从左到右,不过不一定连续,层序遍历一定连续。

由于不连续,所以就用一个数组来记录上一个访问到的该层数的结点的值,类似于数组计数思想

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

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

相关文章

数据库实验:SQL的数据定义与单表查询

目录 实验目的实验内容实验要求实验过程实验步骤实例代码结果示意 数据库的实验,对关系型数据库MySQL进行一些实际的操作 实验目的 (1) 掌握DBMS的数据定义功能 (2) 掌握SQL语言的数据定义语句 (3) 掌握RDBMS的数据单表查询功能 (4) 掌握SQL语言的数据单表查询语句…

UN38.3认证和MSDS有什么区别? 锂电池UN38.3检测标准要求

通常很多人做电池检测的时候,将UN38.3和MSDS混淆或者认为是同一个认证,这对办理检测有非常大的影响。MSDS是化学安全技术说明书,是一份对锂电池成分以及应急处理的文件,UN38.3是对锂电池的一份安全检测。因为锂电池要空运&#xf…

使用 javascript 在 n*m 网格中演示 BFS 广度优先搜索算法求最短路径

完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style type"text/css">#box1 table{border: 0px;border-collapse: collapse;cursor: poi…

protected by SourceGuardian and requires a SourceGuardian loader ‘ixed.8解决方案

php相关问题 安装程序提示以下内容 遇到某些php程序的安装提示&#xff1a; PHP script ‘/www/wwwroot/zhengban.youyacao.com/install/index.php’ is protected by SourceGuardian and requires a SourceGuardian loader ‘ixed.8.1.lin’ to be installed. 1) Click her…

面试测试岗脑子里实在没货,简历(软件测试)咋写?

简历咋写&#xff0c;这是很多没有【软件测试实际工作经验】的同学们非常头疼的事情。 简历咋写&#xff1f;首先你要知道简历的作用。 简历的作用是啥呢&#xff1f; 一句话就是&#xff1a;让HR小姐姐约你。 如何让HR看你一眼&#xff0c;便相中你的简历&#xff0c;实现在众…

panabit日志审计singleuser_action.php任意用户添加漏洞复现

文章目录 panabit日志审计singleuser_action.php任意用户添加漏洞复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 panabit日志审计singleuser_action.php任意用户添加漏洞复现 0x01 前言 免责声明&#xff1a;请勿利用文章…

PADS Router的操作页面及鼠标指令介绍

PADS Router的用户界面由菜单栏&#xff0c;工作界面&#xff0c;一般工具栏&#xff0c;状态栏&#xff0c;项目浏览器组&#xff0c;输出窗口&#xff0c;电子表格组成&#xff08;图1&#xff09;&#xff1a; 图1 注意&#xff1a;如果你的界面没有显示项目浏览器&#xff…

亚马逊车充UL2089认证费用是多少,测试流程

熟悉亚马逊的都知道&#xff0c;电子电器产品在亚马逊上是一个比较受欢迎的品类&#xff0c;卖家也是比较多&#xff0c;随着电子电器产品的多样化&#xff0c;亚马逊对于产品的安全以及合规审核也越来越严格&#xff0c;近期很多车充品类的卖家遇到很多的问题就是亚马逊要求商…

el-input输入校验插件(正则表达式)

使用方法&#xff1a;在main.js文件中注册插件然后直接在<el-input>加入‘v-插件名’ (1)在main.js文件&#xff1a; // 只能输入数字指令 import onlyNumber from /directive/only-number; Vue.use(onlyNumber); &#xff08;2&#xff09;在src/directive文件夹中 &a…

window10 mysql8.0 修改端口port不生效

mysql的默认端口是3306&#xff0c;我想修改成3307。 查了一下资料&#xff0c;基本上都是说先进入C:\Program Files\MySQL\MySQL Server 8.0这个目录。 看看有没有my.ini&#xff0c;没有就新建。 我这里没有&#xff0c;就新建一个&#xff0c;然后修改port&#xff1a; […

中文编程从入门到精通,中文编程语言开发工具分享

中文编程从入门到精通&#xff0c;中文编程语言开发工具分享 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&#xff0c;向如图这个实例就…

商标服务展示预约小程序的效果如何

想要打造自己的品牌&#xff0c;商标是必要的一步&#xff0c;除了可以自己申请外&#xff0c;部分商家会选择通过第三方代理平台操作&#xff0c;在商城注册场景包括查询、资料提交、驳回复审等。 市场生意并不缺&#xff0c;对商标注册代理机构来说&#xff0c;需要不断拓客…

线程池--简单版本和复杂版本

目录 一、引言 二、线程池头文件介绍 三、简单版本线程池 1.创建线程池 2.添加任务到线程池 3.子线程执行回调函数 4.摧毁线程池 5.简单版线程池流程分析 四、复杂版本线程池 1.结构体介绍 2.主线程 3.子线程 4.管理线程 一、引言 多线程版服务器一个客户端就需要…

【算能】模型转换过程报错

报错信息&#xff1a; RuntimeError: [!Error]: tpuc-opt otv_batch1.mlir --chip-assign"chipbm1684" --chip-top-optimize --convert-top-to-tpu"modeF16 asymmetricTrue" --canonicalize -o otv_bm1684_f16_tpu.mlir报错问题&#xff1a; 1684的模型…

Java面向对象(进阶)-- 四种权限测试与方法的重写(override_overwrite)

文章目录 一、四种权限修饰二、测试四种权限修饰&#xff08;1&#xff09;准备&#xff08;2&#xff09;同一个类&#xff08;3&#xff09;同一个包&#xff08;4&#xff09;同一个包子类&#xff08;5&#xff09;不同包子类&#xff08;6&#xff09;跨包不是子类&#x…

shell基础篇:Bash特性和shell变量

shell基础篇 一、Bash特性bash基础特性关于历史记录的简单用法bash特性汇总 二、shell变量变量含义shell变量名规则定义shell变量变量替换/引⽤变量的作⽤域 一、Bash特性 bash基础特性 ● bash是一 个命令处理器&#xff0c;运行在文本窗口中&#xff0c;并能执行用户直接输…

PCB设计入门基础

PCB设计入门基础 PCB基本结构 copper foil 铜箔laminate 层压(或粘合)材料inner layer core 内层堆芯 PCB基本结构是一个三明治的结构&#xff0c;它的上层是一个铜层&#xff0c;底层也是一个铜层&#xff0c;中间层脚FR-4&#xff0c;FR-4是一层不导电的物质&#xff0c;叫做…

轻量封装WebGPU渲染系统示例<11>- WebGPU简单PBR效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/main/src/voxgpu/sample/SimplePBRTest.ts 此示例渲染系统实现的特性: 1. 用户态与系统态隔离。 细节请见&#xff1a;引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调用隔离。 …

爆肝整理,Fiddler+Charles+Chrome开发者工具弱网测试总结,一篇概全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、Fiddler模拟弱…

​国网、首钢集团、施耐德、吉利等出席2023中国企业绿电国际峰会​

2023中国企业绿电国际峰会将通过邀请国家发展和改革委员会能源研究所、国网能源研究院、落基山研究所、首钢集团技术研究院、远景集团、施耐德电气、有色金属技术经济研究院有限责任公司、上海电气储能、博世、巴斯夫、晶科能源、吉利汽车等领域的企业高管&#xff0c;从绿色电…