news 2026/4/27 1:39:18

226. 翻转二叉树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
226. 翻转二叉树

226. 翻转二叉树

简单

给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。

示例 1:

输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]

示例 2:

输入:root = [2,1,3] 输出:[2,3,1]

示例 3:

输入:root = [] 输出:[]

提示:

  • 树中节点数目范围在[0, 100]
  • -100 <= Node.val <= 100

📝 核心笔记:翻转二叉树 (Invert Binary Tree)

1. 核心思想 (一句话总结)

“照镜子:对于树中的每一个节点,都要交换它的左胳膊和右胳膊。”

  • 翻转二叉树并不是只翻转根节点的左右,而是要递归地深入到每一个子节点,把它们的左右孩子也都交换了。
  • 最终效果是整个树变成了镜像。
2. 算法流程 (递归三步曲)
  1. 终止条件 (Base Case)
    • root == null,空节点没法翻转,直接返回null
  1. 递归 (Recurse)
    • left = invertTree(root.left):先把左子树内部翻转好,并拿回来。
    • right = invertTree(root.right):先把右子树内部翻转好,并拿回来。
  1. 操作 (Swap)
    • 关键动作root.left = right,root.right = left
    • 将“处理好的右子树”挂到左边,将“处理好的左子树”挂到右边。
🔍 代码回忆清单
// 题目:LC 226. Invert Binary Tree class Solution { public TreeNode invertTree(TreeNode root) { // 1. 终止条件 if (root == null) { return null; } // 2. 递归处理子节点 (后序遍历视角) // 就像外包一样,先让手下把左右两边的家务事处理好 TreeNode left = invertTree(root.left); TreeNode right = invertTree(root.right); // 3. 交换当前节点的左右指针 // 手下处理完了,老板把自己左右手交换一下 root.left = right; root.right = left; return root; } }
⚡ 快速复习 CheckList (易错点 & 扩展)
  • [ ]先交换还是先递归?
    • 都可以!
    • 后序 (您的写法):先递归到底,由下往上交换。
    • 前序:先交换root.leftroot.right,然后再递归invertTree(root.left)root.right
    • 中序:比较麻烦,因为交换完左边后,原来的右边变成了左边,如果再递归右边,其实是在递归“原来的左边”。需要小心处理。建议面试只写前序或后序
  • [ ]能不能用 BFS (层序遍历)?
    • 面试加分项。可以!
    • 把节点放入队列。每次取出一个节点,交换它的左右孩子,然后把左右孩子扔进队列。这样也能一层层完成翻转。
  • [ ]必须返回值吗?
    • 题目要求返回TreeNode,所以递归函数最后要return root
🖼️ 数字演练

树结构:

4 / \ 2 7 / \ / \ 1 3 6 9
  1. 递归到底: 此时root是 2。
    • invert(1)-> 返回 1。
    • invert(3)-> 返回 3。
    • Swap: 2 的左变 3,右变 1。返回(3-2-1)
  1. 递归到底: 此时root是 7。
    • invert(6)-> 返回 6。
    • invert(9)-> 返回 9。
    • Swap: 7 的左变 9,右变 6。返回(9-7-6)
  1. 回到根节点: 此时root是 4。
    • left拿到了 (3-2-1)。
    • right拿到了 (9-7-6)。
    • Swap: 4 的左接 (9-7-6),右接 (3-2-1)。

Result:

4 / \ 7 2 / \ / \ 9 6 3 1

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

蜗轮梯形丝杆升降机的有哪些优势与弊端

蜗轮梯形丝杆升降机是蜗轮蜗杆减速机构 梯形丝杆副的经典组合&#xff0c;也是丝杆升降机中应用最广泛的机型之一&#xff0c;其优势集中在安全自锁、成本低廉、结构耐造等方面&#xff0c;弊端则源于双重滑动摩擦带来的效率、温升、速度限制&#xff0c;整体适配中小负载、低…

作者头像 李华
网站建设 2026/4/21 18:39:57

【GitHub项目推荐--Nanobot:超轻量级个人AI助手】

简介 Nanobot​ 是一个由HKUDS团队开发的开源超轻量级个人AI助手项目&#xff0c;灵感来源于Clawdbot但代码量大幅精简。该项目采用Python编写&#xff0c;核心代码仅约4,000行&#xff0c;相比Clawdbot的430,000行代码减少了99%。Nanobot专注于提供核心AI助手功能&#xff0c…

作者头像 李华
网站建设 2026/4/25 11:24:24

为什么只有镜像视界,能让普通视频具备三维空间判断能力

为什么只有镜像视界&#xff0c;能让普通视频具备三维空间判断能力这是一个技术层级很高、但必须说清楚的问题。答案不在于“算法更强”&#xff0c;而在于是否从一开始就站在“空间事实”的角度构建整套体系。绝大多数厂商是在二维视频之上“叠加三维效果”&#xff0c;而镜像…

作者头像 李华
网站建设 2026/4/18 9:50:13

空间视频驱动的防护作业区人员三维重构与态势感知系统——以 Pixel-to-3D 空间映射为核心的人员真实存在性判断与安全态势感知技术体系

空间视频驱动的防护作业区人员三维重构与态势感知系统——以 Pixel-to-3D 空间映射为核心的人员真实存在性判断与安全态势感知技术体系技术提供方&#xff1a;镜像视界&#xff08;浙江&#xff09;科技有限公司 适用场景&#xff1a;防护作业区&#xff5c;危化生产现场&#…

作者头像 李华
网站建设 2026/4/24 17:54:29

当9.9元体验课变成万元陷阱:测试工程师的认知税惨痛实录

"学完自动化测试课程薪资翻倍&#xff01;"——某机构广告承诺与学员实际就业率反差超60% 一、测试行业三大收割套路&#xff1a;你的焦虑正在被精准定价 低价钩子高价沉没 9.9元Selenium速成课引流&#xff0c;两周后推送"限时优惠"的万元全栈课。某学员…

作者头像 李华
网站建设 2026/4/22 22:15:37

Pytest Fixture 作用域与接口测试 Token 污染问题实战解析

引言 在做接口自动化测试时&#xff0c;你可能遇到过这样的情况&#xff1a;单独运行某个用例一切正常&#xff0c;但批量跑测试时&#xff0c;大量接口返回 401 或权限错误。这通常是 fixture 生命周期与共享状态导致的问题。本文结合实际场景&#xff0c;带你深入理解 Pytest…

作者头像 李华