当前位置: 首页 > article >正文

Morris中序遍历二叉树小结

关键词前驱结点predecessor线索原理中序遍历遍历二叉树有递归和迭代两种写法这两种写法都需要O(n)的空间复杂度都需要O(n)的栈来辅助算法的实现。但是Morris中序遍历只有O(n)的空间复杂度不需要额外的辅助空间。其本质在于在中序遍历顺序“左中右”时遍历左子树时在遍历左子树的同时建立线索遍历完左子树后根据线索退回当前结点访问当前结点时要将线索断开再遍历右子树。前驱结点predecessor此处predecessor专门指的是当前结点current左子树中最右边的结点在中序遍历顺序当中前驱结点的顺序在当前结点current的前一位。predecessor的右子树必然是空结点否则必然不是当前结点current的前驱结点。线索参考线索树在遍历左子树时是一个单程路线如果要返回当前结点current就要借助额外的空间进行记录。但是线索就是将前驱结点predecessor和当前链接起来防止在遍历左子树的时候不能退回到当前结点current。具体操作就是将前驱结点predecessor右孩子指向当前结点current。首先树的链接是单向的。其次中序遍历难就在于要先遍历左子树再访问当前结点。从根节点出发遍历左子树在不借助辅助空间记录根节点的时候是没办法返回根结点的。Morris中序遍历就将当前结点current的前驱结点predecessor与current建立线索即建立回程的路这样在中序遍历时就不需要借助额外的辅助空间。建立线索的同时也改变了二叉树的结构因此也要有断开线索的操作复原二叉树。Morris主要步骤找到current的predecessor建立线索遍历左子树退回current断开线索并访问current遍历右子树Morris算法模板1.current无左孩子访问currentcurrent current-right2.current有右孩子找predecessor1.predecessor无右孩子predecessor-right currentcurrent current-left2.predecessor有右孩子访问currentpredecessor-next NULLcurrent current-right你可能会问“刚才不是说predecessor一定没有右孩子吗那算法模板里怎么还要判断predecessor是否有右孩子并且有右孩子还要有相应的操作。”其实观察上面的模板会发现Morris中序遍历对于有左子树的current都是先找predecessor在进行相应的操作因此对于有左子树的同一个结点会找两次predecessor。第一次是在还没遍历左子树时找到predecessor建立线索然后进入左子树进行遍历第二次是在遍历完左子树后退回当前结点找到predecessor断开线索然后访问当前结点并进入右子树进行遍历。从另一个角度看判断predecessor是否有右孩子也是判断当前中序遍历到哪一个步骤predecessor无右孩子则当前还没遍历左子树因此要建立线索并遍历左子树predecessor有右子树则当前是已经遍历完左子树即已经建立了线索并退回到当前结点因此要断开线索访问当前结点遍历右子树。因此在找predecessor的时候有两个判断条件一个是右孩子是否为空不为空则继续往右边找另一个是右孩子是否指向current指向current则循环结束。

相关文章:

Morris中序遍历二叉树小结

关键词:前驱结点predecessor,线索原理:中序遍历遍历二叉树有递归和迭代两种写法,这两种写法都需要O(n)的空间复杂度,都需要O(n)的栈来辅助算法的实现。但是Morris中序遍历只有O(n)的空间复杂度,不需要额外的…...

八股面经——Web测试中的业务测试

1、Web测试与APP测试、桌面应用测试的主要区别是什么?答:主要区别在于技术架构、测试重点和环境技术架构:Web测试基于B/S架构,核心是浏览器和服务器APP测试基于C/S架构,核心是客户端和服务器桌面应用测试直接运行操作系…...

如何解决ORA-12518监听程序无法分配进程_内存耗尽与PGA溢出

ORA-12518错误本质是PGA内存耗尽,非监听器故障;需查v$pgastat和v$process定位高消耗进程,可临时调高pga_aggregate_target或杀 rogue 进程,长期应启用连接池并避免隐式PGA泄漏。ORA-12518 错误本质是 PGA 不够用,不是监…...

Tomcat后台权限详解与实战:从manager-gui到JMX,不同角色如何影响你的安全防线

Tomcat后台权限深度解析:从角色配置到安全加固实战指南 1. Tomcat权限模型的核心架构 在Apache Tomcat的权限体系中,/conf/tomcat-users.xml文件扮演着神经中枢的角色。这个看似简单的XML配置文件实际上定义了整个容器的访问控制矩阵。与常见的RBAC&am…...

开源数字孪生平台OpenTwins:5步打造你的工业物联网可视化系统

开源数字孪生平台OpenTwins:5步打造你的工业物联网可视化系统 【免费下载链接】opentwins Innovative open-source platform that specializes in developing next-gen compositional digital twins 项目地址: https://gitcode.com/gh_mirrors/op/opentwins …...

内联函数(inline)的内存原理 --- 拓展普通函数和宏的对比

1&#xff0c;普通函数调用流程&#xff08;栈的使用&#xff09;假设有一个普通函数&#xff1a;void Print() { int x 10; std::cout << x; }int main() { Print(); }调用过程&#xff08;CPU 和栈视角&#xff09;&#xff1a;调用 Print()CPU 执行 call Print当前栈…...

Bearer Token在现代Web API中的安全实践与优化策略

1. Bearer Token的核心原理与安全基础 Bearer Token本质上是一串随机生成的字符&#xff0c;它就像一把万能钥匙——谁持有它&#xff0c;谁就能打开对应的资源大门。这种设计在OAuth 2.0框架下尤为常见&#xff0c;我见过太多开发者因为对这把"钥匙"的保护不当而引…...

LiuJuan Z-Image Generator应用场景:自媒体团队日更30+张原创配图工作流

LiuJuan Z-Image Generator应用场景&#xff1a;自媒体团队日更30张原创配图工作流 1. 引言&#xff1a;当内容创作遇上效率瓶颈 想象一下&#xff0c;你是一个自媒体团队的负责人。每天&#xff0c;你和你的团队需要为公众号文章、小红书笔记、抖音视频准备配图。这些图片不…...

解锁音乐自由:ncmdumpGUI——Windows平台NCM加密文件一键转换利器

解锁音乐自由&#xff1a;ncmdumpGUI——Windows平台NCM加密文件一键转换利器 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款专为Windows用户…...

如何高效解决魔兽争霸3兼容性问题:专业玩家的终极指南

如何高效解决魔兽争霸3兼容性问题&#xff1a;专业玩家的终极指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏魔兽争霸3在Windows …...

浏览器返回键总遭“劫持”,Google重拳出击:6月15日起,将认定为违规!

整理 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;经常用浏览器的人&#xff0c;大概都踩过这个坑&#xff1a;一不小心点进某个页面&#xff0c;想返回上一页&#xff0c;却发现“后退按钮”突然失灵了。怎么点都回不去&#xff0c;要么只是原地刷新&…...

玩AI要想不伤身,就得加大多巴胺阻。

4月12日&#xff0c;外媒报道&#xff0c;“OpenAI”执行长Sam Altman住处遭袭后续。嫌犯被捕后供称想“杀死”他&#xff0c;以阻止AI发展、避免人类灭绝。俗话说&#xff0c;物极必反。信息越是通畅无阻&#xff0c;你的思维钻头就越吃不上劲儿&#xff0c;无处使劲儿&#x…...

ANIMATEDIFF PRO保姆级教程:手把手教你用文字生成电影感视频

ANIMATEDIFF PRO保姆级教程&#xff1a;手把手教你用文字生成电影感视频 1. 前言&#xff1a;开启你的AI电影创作之旅 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能获得一段具有电影质感的动态视频。这不是科幻电影的情节&#xff0c;而是ANIMATEDIFF PRO带…...

Qwen3.5-2B边缘部署案例:在Jetson Nano/树莓派上运行多模态AI的完整步骤

Qwen3.5-2B边缘部署案例&#xff1a;在Jetson Nano/树莓派上运行多模态AI的完整步骤 1. 引言&#xff1a;轻量级多模态AI新选择 Qwen3.5-2B作为Qwen3.5系列的小参数版本&#xff08;20亿参数&#xff09;&#xff0c;专为边缘计算设备优化设计。这个轻量化多模态基础模型在保…...

手把手教你用像素时装锻造坊:复古界面+Stable Diffusion,轻松玩转AI时装设计

手把手教你用像素时装锻造坊&#xff1a;复古界面Stable Diffusion&#xff0c;轻松玩转AI时装设计 1. 当AI时装设计遇上复古RPG 想象一下这样的场景&#xff1a;你坐在像素风格的工坊里&#xff0c;面前是一台闪着蓝光的锻造机。选择一款皮衣模板&#xff0c;输入几个关键词…...

高效跨平台小说下载器:一站式数字阅读管理完整方案

高效跨平台小说下载器&#xff1a;一站式数字阅读管理完整方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader Tomato-Novel-Downloader是一款基于Rust开发的智能跨平台小说下…...

腾讯开源 | 蒸馏结合可学习缓存:腾讯混元视频生成加速新探索

来自腾讯混元的全新AIGC视频生成加速方案--(Distillation-CompatibleLearnableFeatureCaching)DisCa正式开源&#xff0c;作为学界和业界首次对基于可学习的特征缓存技术进一步加速蒸馏后少步模型的这一方向的尝试&#xff0c;该工作现已被CVPR2026接收。TL;DR速览:DisCa主要聚…...

杭州师范大学生命科学学院2026考研复试资料包(电子版)|真齐全+高频考点全覆盖

温馨提示&#xff1a;文末有联系方式 杭师大生命科学学院2026考研复试专属资料包 本资料包专为报考杭州师范大学生命科学学院2026级硕士研究生的考生精心整理&#xff0c;全程电子化&#xff0c;内容系统全面&#xff0c;直击复试核心环节。 2025年杭师大生科院复试笔试真&am…...

重庆科技大学安全工程考研复试专用资料|涵盖安全系统工程、风险工程学等核心科目

温馨提示&#xff1a;文末有联系方式一、权威覆盖&#xff1a;重庆科技大学安全工程复试核心课程资料 本套资料深度聚焦重庆科技大学安全工程专业研究生复试要求&#xff0c;系统整合《安全系统工程》《风险工程学》等关键专业课内容&#xff0c;紧扣近年复试命趋势与学科重点&…...

【Java】类与对象的本质:从底层逻辑到面试实战

【Java】类与对象的本质&#xff1a;从底层逻辑到面试实战类与对象的本质——语言根基&#xff08;三&#xff09;一、从内存视角看“类”和“对象”1.1 类&#xff1a;一段只读的蓝图代码1.2 对象&#xff1a;一块可写的堆内存二、底层机制2.1 方法调用如何完成2.2 this 指针的…...

别等客户投诉才升级!2026奇点大会AI客服机器人5级成熟度模型来了:你的系统卡在L2还是已突破L4自治阈值?

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI客服机器人 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次将AI客服机器人列为“可部署级智能体”核心示范场景&#xff0c;聚焦多模态意图理解、实时语义纠偏与跨平台服务编排三大突破。现场演示的OpenSer…...

直播预告 | 密歇根州立大学刘思佳教授:从机器遗忘到更广泛的模型调控

PaperWeekly 星弧 STARC 科研觉醒AI前沿讲座 直播主题 从机器遗忘到更广泛的模型调控 直播嘉宾 刘思佳密歇根州立大学杰出副教授MIT-IBM Watson AI Lab客座教授 直播时间 2026年4月18日&#xff08;周六&#xff09;10:00-11:00 参会方式 腾讯会议/VooV ID: 721-062-543 报告介…...

AI逆向|使用AI反编译反混淆练习平台第18题jsvmp

关注它&#xff0c;不迷路。本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01;一.题目地址https://match.yuanrenxue.cn/match/18二.抓包分析先打开控制台&…...

3DGS项目复现:从COLMAP稀疏重建到高斯模型训练全流程拆解

1. 3DGS项目复现概述 3D Gaussian Splatting&#xff08;3DGS&#xff09;是近年来计算机视觉领域的一项突破性技术&#xff0c;它通过将3D场景表示为大量可学习的高斯分布来实现高质量的视图合成。与传统的NeRF方法相比&#xff0c;3DGS在渲染速度、内存效率和场景细节保留方面…...

网易股权曝光:丁磊持股45.5% 身价2228亿 一年获股息超50亿

雷递网 雷建平 4月15日网易今日发布20-F文件&#xff0c;文件显示&#xff0c;网易董事、CEO为丁磊&#xff0c;独立董事分别为郑玉芬、唐徽、唐子期、陈觉忠、梁民杰&#xff0c;总法律顾问为Paul W. Boltz, Jr&#xff0c;财务副总裁为莫斌。截至2026年2月28日&#xff0c;丁…...

从零构建ROS机器人行为树:Groot可视化调试实战指南

1. 为什么需要行为树与Groot&#xff1f; 想象一下你在指挥一支机器人小队执行巡逻任务。如果只用传统代码写逻辑&#xff0c;可能会变成一堆复杂的if-else嵌套&#xff0c;就像用文字描述"如果看到敌人就攻击&#xff0c;否则检查A点&#xff0c;如果距离A点小于0.5米就…...

前端测试体系

前端测试体系&#xff1a;构建高质量Web应用的基石 在当今快速迭代的Web开发领域&#xff0c;前端测试已成为保障产品质量的关键环节。随着单页应用&#xff08;SPA&#xff09;和复杂交互场景的普及&#xff0c;前端代码的逻辑复杂度显著提升&#xff0c;仅靠人工测试已难以覆…...

手把手教你用SiameseAOE:中文文本情感抽取实战

手把手教你用SiameseAOE&#xff1a;中文文本情感抽取实战 1. 认识SiameseAOE模型 1.1 什么是属性观点抽取 想象一下&#xff0c;你面前有1000条用户对某款手机的评论&#xff0c;如何快速找出用户对"摄像头"、"电池"、"屏幕"等各个方面的评价…...

浦语灵笔2.5-7B开源可部署:魔搭社区ModelScope模型一键拉取

浦语灵笔2.5-7B开源可部署&#xff1a;魔搭社区ModelScope模型一键拉取 1. 模型概述与核心价值 浦语灵笔2.5-7B是上海人工智能实验室开发的多模态视觉语言大模型&#xff0c;基于InternLM2-7B架构&#xff0c;融合了CLIP ViT-L/14视觉编码器。这个模型能够同时理解图片和文字…...

Unity机械臂控制实战:两种运动方式对比与DOTween动画实现

Unity机械臂控制实战&#xff1a;两种运动方式对比与DOTween动画实现 机械臂控制在工业仿真、游戏开发等领域有着广泛应用。Unity作为一款强大的跨平台引擎&#xff0c;为机械臂控制提供了灵活的实现方案。本文将深入探讨两种主流运动方式——顺序运动与同步运动&#xff0c;并…...