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

day143—递归—对称二叉树(LeetCode-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

解决方案:

这段代码的核心功能是判断一棵二叉树是否为对称二叉树(即二叉树的左子树和右子树互为镜像),复用了 “判断两棵树是否相同” 的逻辑,将 “对称判断” 转化为 “左子树与右子树是否镜像相同”,采用递归实现,时间复杂度O(n)n为节点数),空间复杂度O(h)h为树的高度),是该问题的经典简洁解法。

核心逻辑

代码的核心思路是 “对称 = 左子树与右子树镜像相同”,通过复用isSameTree函数实现,关键是把 “镜像对比” 转化为 “两棵树的对比”:

  1. 复用判断相同树的逻辑isSameTree函数负责校验两棵树是否节点值、结构完全一致(前序递归,先校验当前节点,再递归校验左右子节点);
  2. 对称判断的转化:判断二叉树对称,等价于判断 “根节点的左子树” 和 “根节点的右子树” 是否满足 “镜像相同”—— 而isSameTree(root->left, root->right)恰好完成这个校验(因为isSameTree会逐节点对比root->left的左子节点与root->right的左子节点、root->left的右子节点与root->right的右子节点,这正是镜像对称的要求);
  3. 边界处理:若根节点为空,root->leftroot->right均为空,isSameTree会返回true,符合 “空树是对称的” 逻辑。

总结

  1. 核心思路:将 “对称二叉树判断” 转化为 “左子树和右子树是否相同” 的问题,复用已有逻辑,简化代码;
  2. 关键等价性:对称二叉树的本质是「左子树与右子树镜像全等」,而isSameTree(root->left, root->right)恰好完成这种镜像校验;
  3. 效率特点:与判断相同树的效率一致,每个节点仅遍历一次,时间O(n),递归栈空间取决于树的高度,是最优解法之一。

函数源码:

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p==nullptr || q==nullptr){ return p==q; } return q->val==p->val && isSameTree(p->left,q->right) && isSameTree(p->right,q->left); } bool isSymmetric(TreeNode* root) { return isSameTree(root->left,root->right); } };
http://www.jsqmd.com/news/263890/

相关文章:

  • 5. vLLM 出现前的推理地狱
  • MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程
  • 6. PagedAttention 的历史背景
  • 数据湖与数据仓库的演进与未来:一场技术辩论
  • RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图 - MKT
  • 全网最全MBA开题报告TOP8一键生成论文工具测评
  • 2. 训练 vs 推理:真正烧钱的是哪一步
  • win10 电脑 蓝牙耳机连接后没有声音
  • 为什么大厂都在做智能运维AI平台?AI应用架构师解析背后的商业逻辑
  • 3. OpenAI / DeepSeek 推理系统演进史
  • 为什么所有主流LLM都使用SwiGLU?
  • 模拟南宁理工学院官网页面
  • 2026年长沙婚纱礼服推荐租赁排名:年初备婚请看 - charlieruizvin
  • 兰亭妙微洞察:B 端与 C 端界面设计核心差异,别再用 C 端思维做 B 端
  • 兰亭妙微:以交互设计与UI设计赋能文旅小程序,重塑用户体验界面设计优化新标杆
  • 计算机毕设怎么写?从选题到答辩的超详细通关攻略
  • Linux软件安装 —— JDK安装
  • HTML标签的使用 - 标题和段落
  • YOLO26 接入实时视频 - GPU 加速2
  • 【Linux】带上时区
  • 视觉语言导航(VLN)入门基础! - MKT
  • 数论1:整除、同余、质数筛
  • MySQL Buffer Pool深度解析:当缓存页不足时如何基于LRU算法进行淘汰 - 详解
  • 内存管理-MMU
  • 1.18假期记录
  • 区间dp
  • STM32-S57-烟雾浓度+温度+人体防盗报警+水泵+风扇+TFT彩屏+阈值+声光报警+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 综述《导航定位与授时》封面丨飞行器视觉导航新时代——从地形匹配到空间智能 - MKT
  • STM32-S184-车位感应+停车引导+闸道控制+车道防夹+计时计费+结算+OLED屏+声光报警+按键+(无线方式选择)(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫
  • AI Agent在智能新闻事件检测中的应用