news 2026/9/30 14:49:40

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->left和root->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/9/27 15:59:01

4. 为什么 Triton 不够了

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2026年&#xff0c;随着大模型规模和复杂度的急剧增长&#xff0c;传统推理框架Triton Inference Server在处理现代推理场景时逐渐显现出局限性。本文深入剖析了Trit…

作者头像 李华
网站建设 2026/9/30 10:05:19

LangGraph详解:构建智能代理工作流的新范式

目录 前言 什么是LangGraph&#xff1f; 核心概念 主要特性 与传统链式调用的对比 开始使用&#xff1a; LangGraph核心架构 状态管理 节点与边 条件边与循环 实战案例&#xff1a;构建智能客服工单处理系统 案例需求分析 系统实现 步骤1&#xff1a;定义状态结构…

作者头像 李华
网站建设 2026/9/30 18:00:44

Python+django的图书资料借阅信息管理系统的设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着信息化时代的快速发展&#xff0c;图书资料的管理效率成为图书馆和各类机构关注的重点。传统的纸质记录方式效率低下且容易…

作者头像 李华
网站建设 2026/9/30 5:35:47

STM32-270-多功能水质监测系统(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

STM32-270-多功能水质监测系统(设计源文件万字报告讲解)&#xff08;支持资料、图片参考_相关定制&#xff09;_文章底部可以扫码 产品功能描述&#xff1a; 本系统由STM32F103C8T6单片机核心板、TFT1.44寸彩屏液晶显示电路、&#xff08;无线蓝牙/无线WIFI/无线视频监控模块-可…

作者头像 李华
网站建设 2026/9/27 17:59:17

C语言:指针

吃透 C 语言指针&#xff1a;从本质到实战&#xff0c;告别 “指针恐惧症” 指针是 C 语言的灵魂&#xff0c;也是很多初学者入门路上的 “拦路虎”—— 有人觉得它晦涩难懂、容易出错&#xff0c;写代码时避之不及&#xff1b;也有人掌握后感叹其灵活高效&#xff0c;能轻松实…

作者头像 李华