news 2026/7/14 6:26:04

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/6/29 22:48:58

中小品牌必备!2026年高性价比软文推广平台TOP5

对于预算有限的中小品牌&#xff0c;软文推广是实现品牌曝光与产品营销的性价比之选。然而&#xff0c;市场上发稿平台众多、质量参差&#xff0c;如何选择可靠、高效且能最大化预算价值的合作伙伴&#xff0c;成为市场决策者的关键挑战。真正的“高性价比”应是资源精准度、执…

作者头像 李华
网站建设 2026/7/1 8:12:46

模运算

lc3345 直接 n) % n 会越界&#xff0c;要 % n n) % n]; // 保证结果在 [0,n-1] 中 class Solution { public: vector<int> constructTransformedArray(vector<int>& nums) { int n nums.size(); vector<int> result(n); …

作者头像 李华
网站建设 2026/7/1 22:07:03

基于Python+Django青岛滨海学院县志捐赠与借阅信息管理系统(源码+lw+部署文档+讲解等)

课题介绍 本课题针对青岛滨海学院县志捐赠与借阅管理中存在的县志档案杂乱、捐赠信息登记繁琐、借阅流程低效、归还提醒不及时、库存统计不便、捐赠者信息管理分散等痛点&#xff0c;设计并实现基于PythonDjango的青岛滨海学院县志捐赠与借阅信息管理系统。后端采用Python语言结…

作者头像 李华
网站建设 2026/7/1 3:36:27

软件测试公众号热度内容解析:专业视角下的三大爆款赛道

2026年&#xff0c;软件测试公众号的热度内容高度专业化&#xff0c;阅读量破万的文章集中于三大类型&#xff0c;均以解决从业者实际痛点为内核。这些内容如同鹤岗的“双极人生”&#xff0c;在技术深度&#xff08;代码&#xff09;与实用韧性&#xff08;冰雕&#xff09;间…

作者头像 李华
网站建设 2026/7/1 8:12:08

从职业烧伤到AI心理教练:开发者的自愈之路

在软件测试领域&#xff0c;职业倦怠&#xff08;俗称“职业烧伤”&#xff09;已成为普遍挑战&#xff0c;源于高强度工作、项目压力和创新需求匮乏。数据显示&#xff0c;2026年初&#xff0c;测试从业者离职率上升&#xff0c;部分原因包括长时间调试代码、应对紧急交付和缺…

作者头像 李华