news 2026/4/3 4:26:27

【递归】二叉树的镜像

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【递归】二叉树的镜像


求解代码

这道题遍历二叉树的每一个节点,然后交换左右子节点就可以了。

1.前序遍历
publicTreeNodeMirror(TreeNodepRoot){if(pRoot==null){returnnull;}TreeNodetemp=pRoot.left;pRoot.left=pRoot.right;pRoot.right=temp;Mirror(pRoot.left);Mirror(pRoot.right);returnpRoot;}
2.中序遍历
publicTreeNodeMirror(TreeNodepRoot){if(pRoot==null){returnnull;}Mirror(pRoot.left);TreeNodetemp=pRoot.left;pRoot.left=pRoot.right;pRoot.right=temp;Mirror(pRoot.left);//注意上面交换过了returnpRoot;}
3.后序遍历
publicTreeNodeMirror(TreeNodepRoot){if(pRoot==null){returnnull;}TreeNodeleft=Mirror(pRoot.left);TreeNoderight=Mirror(pRoot.right);pRoot.left=right;pRoot.right=left;returnpRoot;}

注意⚠️:

这里解释一下中序遍历的第二个递归为什么是Mirror(pRoot.left);而不是Mirror(pRoot.right);?

因为执行完:

TreeNodetemp=pRoot.left;pRoot.left=pRoot.right;pRoot.right=temp;

这三行代码之后,当前节点的左右指针发生了互换,指向变成了:

pRoot.left → 原右子树(R)pRoot.right → 原左子树(L)

要处理的「原右子树 R」,现在的内存地址其实是pRoot.left

如果此时写Mirror(pRoot.right),实际处理的是「已经翻转完的原左子树 L」,这样就会造成翻转结果错误。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/2 19:03:19

UNC北卡教堂山分校突破性研究:让AI视觉推理像侦探一样自我进化!

这项由美国北卡罗来纳大学教堂山分校(UNC-Chapel Hill)的刘佳齐、熊凯文、夏鹏、周一洋、季皓年、冯璐、韩思维、丁明宇、姚华秀等九位研究者共同完成的突破性研究,发表于2025年11月的arXiv预印本平台,论文编号为arXiv:2511.19900…

作者头像 李华
网站建设 2026/3/14 6:08:42

Matlab 基于Bayes-RF可解释性分析的分类预测

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 (Bayes-RFSHAP)基于贝叶斯算法优化随机森林的数据多输入单输出SHAP可解释性分析的分类预测模型 由于Bayes-RF在使用SHAP分析时速度较慢,程序中附带两种SHAP的计算文件(正常版和提速版本)&#x…

作者头像 李华
网站建设 2026/3/1 15:55:34

一文搞懂Kotlin的let、with、run、apply、also标准函数

Kotlin 里有五个“看似相似、实则各有门派”的函数:let、with、run、apply、also。 它们是 Kotlin 官方定义的“标准函数(Standard Functions)”, 可是在面试中,它们也是让人最头疼的考点之一: “run 和 apply 有什么区别?” “什么时候用 let 比 also 更合适?” “w…

作者头像 李华
网站建设 2026/3/23 15:49:02

【系统架构师备考笔记】004信息系统开发方法

信息系统开发方法概述信息系统开发的定义与重要性开发方法的选择依据(项目需求、复杂度、团队能力等)主流开发方法的分类与特点原型法(Prototyping)【需求阶段】核心思想:快速构建可演示的简化版本,逐步迭代…

作者头像 李华
网站建设 2026/4/2 16:10:26

Solidworks2023软件启动就崩溃可能的解决办法

Solidworks2023软件启动就崩溃可能的解决办法 我的SOLIDWORKS软件版本 帮助→关于SOLIDWORKS软件版本: SOLIDWORKS(R) Premium 2023 SP0.1 SOLIDWORKS: 是达索系统(Dassault Systmes)旗下一款基于 Windows 开发的 3D CAD(计算机辅助设计)软件, 是目前全球工业设计、机械工程领域…

作者头像 李华
网站建设 2026/3/23 21:33:31

012-计算机网络实验报告完整版!

今天给大家分享的是完整的计算机接口实验报告: 主要有:1、网络命令的使用;2、Wireshark抓包分析;3、使用Packet Tracer模拟网络环境;4、使用Packet Tracer模拟路由协议 相信学计算机的小伙伴肯定不陌生,这几…

作者头像 李华