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.mzph.cn/news/1179352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5. vLLM 出现前的推理地狱

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2023年vLLM出现之前&#xff0c;大模型推理面临着显存碎片化、低效调度和高延迟等诸多挑战&#xff0c;被称为"推理地狱"。本文通过回顾pre-vLLM时代的痛点…

MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程

MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

6. PagedAttention 的历史背景

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; PagedAttention技术是vLLM的核心创新&#xff0c;它借鉴了操作系统中的虚拟内存分页管理思想&#xff0c;革命性地解决了大模型推理中的显存碎片化问题。本文追溯了P…

数据湖与数据仓库的演进与未来:一场技术辩论

内容&#xff1a;节目摘要 简介数据湖的未来两个技术栈会合二为一吗&#xff1f;数据网格&#xff1a;去中心化团队&#xff0c;统一架构&#xff1f;现代数据栈的下一个用例延迟&#xff1a;我们需要多低&#xff1f; 数据湖与仓库、分析与AI/ML、SQL与万物…… 随着数据湖和数…

RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图 - MKT

RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图https://mp.weixin.qq.com/s/5dFbWpGX8BeJwNt_MGIv-A 在视觉导航任务中,智能体(机器人)如何有效地存储和利用空间记忆是核心难题。传统的地图表征,如占据栅格…

全网最全MBA开题报告TOP8一键生成论文工具测评

全网最全MBA开题报告TOP8一键生成论文工具测评 2026年MBA开题报告写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着MBA学习的深入&#xff0c;开题报告成为每位学生必须面对的重要环节。然而&#xff0c;从选题构思到资料整理、框架搭建&#xff0c;再到内容撰写与格…

2. 训练 vs 推理:真正烧钱的是哪一步

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2026年&#xff0c;AI行业的成本结构已经发生根本性转变。本文通过云厂商真实数据揭示&#xff0c;推理的累计成本已超过训练10倍以上&#xff0c;成为真正烧钱的环节…

win10 电脑 蓝牙耳机连接后没有声音

win10 电脑 蓝牙耳机连接后没有声音win10系统 技嘉z790m 冰雕主板 症状如下 蓝牙耳机有时连不上,有时连上了没有任何声音。 操作 设备管理器里把蓝牙下的所有项全部删除,然后重装。 没用 驱动总裁,技嘉官网重新下载…

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

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

3. OpenAI / DeepSeek 推理系统演进史

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 本文深入回顾了OpenAI与DeepSeek两大AI巨头的推理架构演进历程&#xff0c;从早期简单API到如今分布式MoE系统&#xff0c;提取了关键技术教训。通过分析OpenAI的扩展…

为什么所有主流LLM都使用SwiGLU?

本文的目标是解释为什么现代LLM架构在前馈部分使用 SwiGLU作为激活函数并且已经放弃了 ReLU。 神经网络本质上是一系列矩阵乘法&#xff0c;如果我们堆叠线性层而不使用任何激活函数&#xff1a; 无论你堆叠多少层&#xff0c;它仍然只是一个线性变换&#xff0c;网络只能学…

模拟南宁理工学院官网页面

真实南宁理工学院官网页面开始模拟代码&#xff1a;南宁理工学院校徽&#xff1a;校门&#xff1a;成品&#xff1a;

2026年长沙婚纱礼服推荐租赁排名:年初备婚请看 - charlieruizvin

2026年长沙婚纱礼服推荐租赁排名:年初备婚请看伴随95后、00后逐步成为婚恋消费市场的核心群体,婚纱礼服租赁行业的需求偏好正发生结构性转变,摒弃同质化款式,崇尚“正版高定+个性化服务”已成为主流趋势。 据行业权…

兰亭妙微洞察:B 端与 C 端界面设计核心差异,别再用 C 端思维做 B 端

在界面设计领域&#xff0c;B端与C端产品的核心目标、用户群体、使用场景截然不同&#xff0c;若混淆二者设计逻辑&#xff0c;极易导致产品实用性大打折扣。B端产品聚焦企业级需求&#xff0c;以“效率、精准、安全、可拓展”为核心诉求&#xff0c;服务于特定岗位的专业用户&…

兰亭妙微:以交互设计与UI设计赋能文旅小程序,重塑用户体验界面设计优化新标杆

在数字化浪潮席卷文旅行业的当下&#xff0c;小程序已成为品牌触达用户、转化业务的核心载体。新东方文旅作为教育行业头部企业跨界文旅领域的先锋力量&#xff0c;凭借独特的教育资源优势&#xff0c;致力于打造高品质、有文化内涵的文旅产品。随着战略升级&#xff0c;其目标…

计算机毕设怎么写?从选题到答辩的超详细通关攻略

&#x1f4ab; 关于文星毕设 深耕计算机毕设领域5年&#xff0c;全网累计帮助10000学生顺利毕业&#xff01;CSDN认证全栈技术博主、掘金优质创作者&#xff0c;阿里云开发者社区认证专家。 在校期间曾协助导师完成3届毕业生毕设课题审核、论文格式规范指导、项目代码校验工作&…

Linux软件安装 —— JDK安装

文章目录一、节点说明二、下载安装包三、检查/删除现有JDK四、安装一、节点说明 IP主机名192.168.10.102node02192.168.10.103node03192.168.10.104node04二、下载安装包 官网地址&#xff1a;Java Archive Downloads - Java SE 8u211 and later | Oracle 中国 本文安装版本…

HTML标签的使用 - 标题和段落

标题和段落 特点h1 ~ h6一共6级文字自动加粗 + 独占一行h1最好每个页面使用一次,一般用于文章标题或logo Logo使用h1标签的例子: 京东首页除了新闻类场景标题可做分级,其他场景也可使用,例如:小米商城首页的商品…

YOLO26 接入实时视频 - GPU 加速2

经过优化后&#xff0c;稳定在60ms&#xff0c;不卡顿import cv2 from ultralytics import solutions import torch # ✅ 必须在文件顶部 新增导入torch&#xff01;&#xff01;&#xff01; import gc # ✅ 必须在文件顶部 新增导入gc&#xff01;&#xff01;&#xff01…

【Linux】带上时区

cat > setup_vnc.sh << SCRIPT #!/bin/bash# 设置时区为香港 ln -sf /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime echo "Asia/Hong_Kong" > /etc/timezone echo "时区已设置为 Asia/Hong_Kong"# 切换到库文件目录 cd /usr/lib/x86_64-…