news 2026/4/13 1:03:43

day143—递归—对称二叉树(LeetCode-101)

作者头像

张小明

前端开发工程师

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

如何配置Dev-C++使用特定的编译器版本?

在 Dev-C 中配置特定编译器版本需要手动操作&#xff0c;以下是详细步骤&#xff1a;1. 安装目标编译器版本下载所需版本的编译器&#xff08;如 MinGW 的特定 GCC 版本&#xff09;解压至独立目录&#xff08;例如&#xff1a;D:\MinGW-13.1&#xff09;2. 配置 Dev-C打开工具…

作者头像 李华
网站建设 2026/4/8 19:51:50

为什么大厂都在做智能运维AI平台?AI应用架构师解析背后的商业逻辑

为什么大厂都在做智能运维AI平台&#xff1f;AI应用架构师解析背后的商业逻辑 引言&#xff1a;一场运维故障引发的思考 2023年双11凌晨&#xff0c;某头部电商平台的支付系统突然宕机12分钟。尽管技术团队紧急修复&#xff0c;但这场故障仍导致&#xff1a; 直接交易损失超2亿…

作者头像 李华
网站建设 2026/4/2 6:21:01

YOLO26 改进 - 注意力机制 | 空间增强注意力SEAM(Spatially Enhanced Attention Module)提升遮挡场景检测鲁棒性

前言 本文介绍了分离与增强注意力模块&#xff08;SEAM&#xff09;在YOLO26中的结合应用。SEAM模块旨在增强面部特征学习能力&#xff0c;特别是处理面部遮挡问题。它采用多头注意力机制强调面部区域、抑制背景区域&#xff0c;第一部分使用深度可分离卷积减少参数并学习通道…

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

YOLO26 接入实时视频 - GPU 加速

1. GPU 加速优化第一版代码直接使用CPU 进行模型识别&#xff0c;速度根据模型大小而明显变慢yolo26n.pt 最小(5.5M)&#xff0c;识别最快&#xff0c; 在 50ms左右yolo26s.pt 20.4M, 在75ms左右yolo26m.pt 44.3M, 在120ms左右yolo26l.pt 53.2M&#xff0c;在150ms左右yolo26x.…

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

前端性能优化指南:从加载到交互的每一毫秒

前言 上个月&#xff0c;我们的产品被反馈"页面加载太慢"。用户在3G网络下需要等待8秒才能看到内容。 经过一个月的优化&#xff0c;我们把首屏加载时间从8秒降到了1.2秒。这篇文章分享我们的优化实践。 一、性能指标体系 1.1 核心Web指标&#xff08;Core Web Vi…

作者头像 李华