数据结构和算法-线索二叉树中的线索化和在线索二叉树中找前驱后继

线索二叉树的概念

在这里插入图片描述
找到某个节点得按照遍历得到的序列开始遍历才能遍历全部节点,非常繁琐
在这里插入图片描述

中序线索二叉树

在这里插入图片描述

线索二叉树的存储结构

在这里插入图片描述

先序线索二叉树

在这里插入图片描述

后序线索二叉树

在这里插入图片描述

三种线索二叉树的对比

即对应前驱后后继判断标准不同
在这里插入图片描述

小结

在这里插入图片描述

二叉树的线索化

在这里插入图片描述

用土办法找中序前驱

当访问到某个节点时先看是否和目标节点一致,一致就保存在final指针中,不一致就更新将当前节点赋值给pre指针。然后依次访问下一个节点

在这里插入图片描述

中序线索化

判断前驱的右孩子和当前节点的左孩子,二者符合条件则连接,然后再更新前驱节点位当前节点
在这里插入图片描述
在这里插入图片描述

王道教材版

pre参数为引用类型,这样才能做到修改变量的值
在这里插入图片描述

先序线索化

此时访问第三个节点后还需遍历左子树,但左孩子已经在visit中被更新为第二个节点,这样又会开始遍历第二个节点,从而陷入反复循环
在这里插入图片描述

多了个判断左孩子

在这里插入图片描述

王道教材版

在这里插入图片描述

后序线索化

不会出现访问节点后再去遍历节点的左孩子
在这里插入图片描述

王道教材版

在这里插入图片描述

小结

在这里插入图片描述

在线索二叉树中找前驱后继

中序线索二叉树找中序后继

在这里插入图片描述

中序线索二叉树找中序前驱

在这里插入图片描述

先序线索二叉树找先序后继

在这里插入图片描述

先序线索二叉树找先序前驱

因为节点的左右孩子都只可能是后继,不用不能通过左右孩子来找前驱。此时需要再加入一个父节点的元素或从头遍历
第三种情况中优先右走,没有右子树则左走
在这里插入图片描述

后序线索二叉树找后序前驱

在这里插入图片描述

后序线索二叉树找后序后继

左右孩子只可能是前驱不可能是后继,所以得加个父节点元素或从头遍历
在这里插入图片描述
第三种情况中优先左走,没有左子树则右走

小结

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Prefix-Tuning 论文概述

Prefix-Tuning 论文概述 前缀调优:优化生成的连续提示前言摘要论文十问实验数据集模型实验结论摘要任务泛化性能 前缀调优:优化生成的连续提示 前言 大规模预训练语言模型(PLM)在下游自然语言生成任务中广泛采用fine-tuning的方法进行adaptation。但是f…

android studio安装SDK时无法勾选

这两天帮助学妹安装android studio安装SDK时无法勾选,记录一下最终解决办法。头大。 核心 360 问题 网上所有方法都尝试了包括挂梯子,改hosts,盘符权限等等。 最终解决下载360 使用这两个,DNS注意要用8.8.8.8的 成功解决

超硬核解析Mybatis动态代理原理!只有接口没实现也能跑?

文章目录 前言Mybatis dao层两种实现方式的对比原始Dao开发原始Dao开发的弊端 基于Mapper动态代理的开发方式 Mybatis动态代理实现方式的原理解析动态代理调用链路解析先给出链路调用结果1、调用方法的开始:session.getMapper2、DeaultSqlSession的getMapper3、Conf…

Selenium自动化测试:通过cookie绕过验证码的操作

验证码的处理 对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作 ​解决验证码的方法如下: 1、开发做个万…

西瓜书-主要符号表

主要符号表 LaTeX符号说明How to read letter?\mathit{x}标量\boldsymbol{x}向量\mathrm{x}变量集\mathbf{A}矩阵\mathbf{I}单位阵\mathcal{X}样本空间或状态空间calligraphic X\mathcal{D}概率分布Ɗ calligraphic D\mathit{H}数据样本(数据集)\mathcal{H}假设空…

基于OpenCV的手势1~5识别系统(源码&环境部署)

1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 研究背景与意义: 随着计算机视觉技术的快速发展,手势识别系统在人机交互、虚拟现实、智能监控等领域得到了广泛应用。手势识别系统可以通过分析人体的手势…

LTO编译器优化介绍以及开启方法

文章目录 LTO介绍LTO 开启方法 LTO介绍 LTO(Link Time Optimization,链接时优化)是一种在链接阶段进行优化的技术。传统的编译过程中,编译器仅能对单个编译单元进行优化。LTO 允许编译器看到跨编译单元的代码,从而进行…

jquery 判断是手机端还是电脑端

判断为手机端: var sUserAgent navigator.userAgent.toLowerCase(); var bIsIpad sUserAgent.match(/ipad/i) "ipad"; var bIsIphoneOs sUserAgent.match(/iphone os/i) "iphone os"; var bIsMidp sUserAgent.match(/midp/i) "mid…

【开源】基于Vue和SpringBoot的快递管理系统

项目编号: S 007 ,文末获取源码。 \color{red}{项目编号:S007,文末获取源码。} 项目编号:S007,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快…

【读书笔记】微习惯

周日晚上尝试速读一本书《微习惯》,共七章看了下目录结构并不复杂,计划每章7-8分钟读完, 从20:15-21:00。读的时候,订下闹钟,催促着自己的进度。边读边记了一些要点和微信读书里面的划线。 第六章实践内容最为丰富&…

“此应用专为旧版android打造,因此可能无法运行”,问题解决方案

当用户在Android P系统上打开某些应用程序时,可能会弹出一个对话框,提示内容为:“此应用专为旧版Android打造,可能无法正常运行。请尝试检查更新或与开发者联系”。 随着Android平台的发展,每个新版本通常都会引入新的…

wvp gb28181 pro 平台国标级连功能说明

国标28181不同平台之间支持两种连接方式,平级和上下级,WVP目前支持向上级级联。 测试环境 测试平台上级:192.168.10.209(Alam centos8) 测试平台下级:192.168.10.206(ky10_x86) 下级…

KDE环境文件夹user-dirs为英文

KDE环境文件夹user-dirs 修改KDE主页文件夹为英文 该文件路径 ~/.config/user-dirs.dirs打开后会发现里面的内容如下 # This file is written by xdg-user-dirs-update # If you want to change or add directories, just edit the line youre # interested in. All local …

openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表

文章目录 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表140.1 相关概念140.2 操作步骤140.3 维护建议 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表 为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于…

Ant Design Pro 框架设置API Token拦截器的功能

分享记录一个解决方法,希望对大家有帮助。 找到文件,然后定义一个方法。最后调用一下即可。 代码我也给你贴上了。 // 获取token 拦截方法 const setTokenRequest (config: any) > {const token 30|eh5GNXWRe5rO4XLjbbnqy132RABfiKqI338EoIhqc790a…

思维模型 反馈效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。反馈促进改进。 1 反馈效应的应用 1.1 反馈效应在营销中的应用 1 “可口可乐与百事可乐之战” 在 20 世纪 80 年代,可口可乐公司是全球最大的饮料公司之一,其市场…

利用reddit的api进行爬虫

1 介绍 Reddit是一个社交新闻聚合网站,用户可以发布、评价和讨论各种话题。Reddit的内容涵盖了广泛的主题,可以从中获取大量的文本数据进行情绪分析。 2 注册 2.1 注册reddit 你需要先注册一个reddit的账号。 2.2 注册api https://www.reddit.com/…

文科专业和编程基础薄弱的女孩子做软件的神器——aardio学习资源入门

相关资源 aardio 开发桌面应用,这几点必须要掌握! - 星安果的文章 - 知乎 https://zhuanlan.zhihu.com/p/430970376 从使用者角度来为aardio编程软件说句话 - popdes的文章 - 知乎 https://zhuanlan.zhihu.com/p/461290014 故事和情怀 优点 1 快捷 2 …

HarmonyOS开发(九):数据管理

1、概述 1.1、功能简介 数据管理为开发者提供数据存储、数据管理能力。 它分为两个部分: 数据存储:提供通用数据持久化能力,根据数据特点,分为用户首选项、键值型数据库和关系型数据库。数据管理:提供高效的数据管…

Bean的加载控制

Bean的加载控制 文章目录 Bean的加载控制编程式注解式ConditionalOn*** 编程式 public class MyImportSelector implements ImportSelector {Overridepublic String[] selectImports(AnnotationMetadata annotationMetadata) {try {Class<?> clazz Class.forName("…