news 2026/6/21 18:36:40

101. 对称二叉树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
101. 对称二叉树

101. 对称二叉树

简单

给你一个二叉树的根节点root, 检查它是否轴对称。

示例 1:

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

示例 2:

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

提示:

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

📝 核心笔记:对称二叉树 (Symmetric Tree)

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

“照镜子:左子树的左手,必须等于右子树的右手;左子树的右手,必须等于右子树的左手。”我们要比较的不是一个节点的左右孩子,而是根节点的左子树根节点的右子树这两棵独立的树。

  • 外侧对比 (Outer):左树的左 (p.left) vs 右树的右 (q.right)。
  • 内侧对比 (Inner):左树的右 (p.right) vs 右树的左 (q.left)。
2. 算法流程 (递归三部曲)

我们将根节点的左右子树拆开,分别称为pq

  1. 终止条件 (Base Case)
    • 都为空p == null && q == null-> 对称 (True)。
    • 一个空一个不空:不对称 (False)。
    • (这部分逻辑在您的p == q中完美涵盖了)
  1. 值比较
    • p.val != q.val-> 不对称 (False)。
  1. 递归 (Cross Check)
    • isMirror(p.left, q.right)isMirror(p.right, q.left)
    • 只有两个方向都对称,整体才对称。
🔍 代码回忆清单
// 题目:LC 101. Symmetric Tree class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) return true; // 从根节点开始,拆分成左右两棵树进行比较 return isMirror(root.left, root.right); } // 这是一个改造版的 "isSameTree" // 实际上它检查的是 p 和 q 是否互为镜像 private boolean isMirror(TreeNode p, TreeNode q) { // 1. 终止条件:处理 null 的情况 if (p == null || q == null) { return p == q; // 只有两个都为 null 才返回 true } // 2. 核心递归: // A. 根节点值必须相同 // B. p 的左边 vs q 的右边 (外侧) // C. p 的右边 vs q 的左边 (内侧) return p.val == q.val && isMirror(p.left, q.right) && isMirror(p.right, q.left); } }
⚡ 快速复习 CheckList (易错点 & 迭代法)
  • [ ]不要比较root.leftroot.right
    • 在递归函数内部,不要写if (p.left.val == p.right.val)
    • 每一层只负责比较传入的pq这两个节点,子节点的比较交给下一层递归。
  • [ ]函数命名小建议
    • 虽然逻辑类似isSameTree,但为了避免歧义,建议 helper 函数命名为checkisMirror。因为SameTree通常暗示leftleft,而这里是leftright
  • [ ]迭代法怎么写?(面试常见追问)
    • 使用队列 (Queue)
    • 每次把u.leftv.right成对放入队列,再把u.rightv.left成对放入。
    • 每次取两个出来比对。如果队列空了都没报错,那就是对称的。
🖼️ 数字演练

树结构:

1 / \ 2 2 / \ / \ 3 4 4 3
  1. Start: CompareL(2)vsR(2).
    • Vals match (2==2).
  1. Recurse Outer: CompareL.left(3)vsR.right(3).
    • Match!
  1. Recurse Inner: CompareL.right(4)vsR.left(4).
    • Match!
  1. Result: True.

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

OpenWRT应用商店安装失败解决方案:路由器软件中心配置教程

OpenWRT应用商店安装失败解决方案&#xff1a;路由器软件中心配置教程 【免费下载链接】istore 一个 Openwrt 标准的软件中心&#xff0c;纯脚本实现&#xff0c;只依赖Openwrt标准组件。支持其它固件开发者集成到自己的固件里面。更方便入门用户搜索安装插件。The iStore is a…

作者头像 李华
网站建设 2026/6/9 23:53:00

微信社交关系管理新方案:WechatRealFriends使用指南

微信社交关系管理新方案&#xff1a;WechatRealFriends使用指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …

作者头像 李华
网站建设 2026/6/21 9:21:13

解密 Xamarin.Forms 中嵌入式资源的加载与使用

在 Xamarin.Forms 开发中,如何正确加载嵌入式资源(如图片)是一个常见且容易困扰开发者的问题。本文将通过一个实际案例,详细解释如何在 Xamarin.Forms 应用中正确地加载嵌入式图片资源,并解决常见的错误。 问题背景 假设我们有一个 Xamarin.Forms 项目,其中包含一个名为…

作者头像 李华
网站建设 2026/6/15 12:35:34

3种局域网游戏联机方案:突破无网环境多人游戏限制

3种局域网游戏联机方案&#xff1a;突破无网环境多人游戏限制 【免费下载链接】SteamEmulator MIRROR REPO - Credits : Mr. Goldberg. Steam emulator that emulates Steam online features. Lets you play games that use the Steam multiplayer APIs on a LAN without steam…

作者头像 李华
网站建设 2026/6/10 14:14:50

5个高效技巧:Sonic Visualiser的音乐音频分析实战指南

5个高效技巧&#xff1a;Sonic Visualiser的音乐音频分析实战指南 【免费下载链接】sonic-visualiser Visualisation, analysis, and annotation of music audio recordings 项目地址: https://gitcode.com/gh_mirrors/so/sonic-visualiser 引言 如何解决音乐音频分析中…

作者头像 李华