Leetcode 101. 对称二叉树

LeetCode101对称二叉树 算法特点及适用场景特点利用递归的思想巧妙地将判断二叉树是否对称的问题转化为比较对应子树是否对称相等的子问题,代码结构清晰简洁,逻辑上很符合二叉树这种具有递归结构的数据结构特点,易于理解和实现。通过层层递归比较节点值以及子树的对称性,能够准确地判断二叉树是否满足对称的性质。时间复杂度为 $O (n)`,在遍历二叉树节点判断对称性方面具有合理的效率表现,只要二叉树的节点数量在可接受范围内,都能较快地得出二叉树是否对称的结论。适用场景。 阅读详情

题目

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

在这里插入图片描述
说明:

  • 如果你可以运用递归和迭代两种方法解决这个问题,会很加分。

解答

解法一:递归

本题是 Leetcode 100. 相同的树 的变种题。

Leetcode 100. 相同的树 可看我上篇博客:上篇博客。

本题递归思路:

  1. 如果当前值不相等,结束。
  2. 否则因为为镜像树,所以需要递归 (n1.left, n2.right) 以及 (n1.right, n2.left)。
代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        return isSymmetric(root.left, root.right);
    }
    
    private boolean isSymmetric(TreeNode n1, TreeNode n2) { 
        if(n1 == null) return n2 == null;
        if(n2 == null) return n1 == null;
        return n1.val == n2.val && isSymmetric(n1.left, n2.right) && isSymmetric(n1.right, n2.left);
    }
}
结果

在这里插入图片描述

解法二:队列 + 迭代

这道题和 Leetcode 100. 相同的树 没有太大区别,只是稍微变化了一点。

同样的方法可以解决本题。

详情见:上篇博客。

代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    class Couple {
        TreeNode n1;
        TreeNode n2;
        
        Couple(TreeNode n1, TreeNode n2) {
            this.n1 = n1;
            this.n2 = n2;
        }
    }
    
    public boolean isSymmetric(TreeNode root) {
        if(root == null) return true;
        
        LinkedList<Couple> queue = new LinkedList<>();
        queue.offer(new Couple(root.left, root.right));
        while(!queue.isEmpty()) {
            Couple top = queue.poll();
            TreeNode n1 = top.n1;
            TreeNode n2 = top.n2;
            if(!equals(n1, n2)) return false;
            
            if(n1 != null && n2 != null) {
                queue.offer(new Couple(n1.left, n2.right));
                queue.offer(new Couple(n1.right, n2.left));
            }
        }
        
        return true;
    
    }
    
    private boolean equals(TreeNode p, TreeNode q) {
        if(p == null) return q == null;
        if(q == null) return p == null;
        return p.val == q.val;
    }
}
结果

在这里插入图片描述

【简单】力扣算法题解析LeetCode101:对称二叉树 本文探讨了如何判断二叉树是否对称的问题。通过递归和迭代两种方法实现:递归法通过比较左右子树的镜像关系(左左对右右,左右对右左)实现高效判断,时间复杂度O(n);迭代法则利用队列按层比较对称节点。两种方法均需处理空节点和值不等的边界条件。递归法代码简洁,适合小规模树;迭代法避免栈溢出,适合大规模数据。附Java实现代码及LeetCode提交结果,展示了两种方法的时间/空间复杂度对比。 阅读详情

相关推荐

LeetCode 101 - A LeetCode Grinding Guide (C++ Version).pdf

LeetCode 101 - A LeetCode Grinding Guide (C++ Version).pdf

LeetCode 101:和你一起你轻松刷题(C++)总篇章正在陆续更新

再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。在样例中,我们初始化糖果分配为 [1,1,1],第一次遍历更新后的结果为 [1,1,2],第二次遍历更新后的结果为 [2,1,2]在样例中,排序后的数组为 [[1,2], [1,3], [2,4]]。因此最终保留的区间为 [[1,2], [2,4]]。在这个样例中,我们可以移除区间 [1,3],使得剩余的区间 [[1,2], [2,4]] 互不重叠。

m0_60529319的博客 2066

LeetCode 101_C++_算法_leetcode_leetcode101_leetcode101_源码.zip

LeetCode 101_C++_算法_leetcode_leetcode101_leetcode101_源码.zip

LeetCode-101. 对称二叉树(java)

金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。

**My Coding Family** 1175

数据获取竟如此简单——全球SRTM 90m DEM V4.1数据

SRTM(Shuttle Radar Topography Mission)是由NASA联合国际合作伙伴开展的雷达地形测绘项目,通过航天飞机搭载的合成孔径雷达系统,于2000年通过发射并接收地表反射的雷达信号,获取全球三维地形数据,这一任务填补了高精度全球地形数据的空白。而本文通过十余行的python代码,就更简单、方便地获取这些数据。

m0_38065162的博客 1398

GSM的“时间管理大师”:TDMA时隙、突发脉冲与逻辑信道映射实战图解

本文深入解析GSM网络中的TDMA时隙调度与逻辑信道映射技术,揭示2G网络如何通过精密的时间管理和突发脉冲设计实现高效通信。从TDMA帧结构到GMSK调制优化,详细介绍了GSM的工程艺术及其在现代通信中的延续价值。

weixin_30631587的博客 514

LeetCode 101. 对称二叉树

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 101. 对称二叉树,做好准备了么,那么开始吧。 🌲🌲🐴🐴

weixin_62275996的博客 760

STM32H743实战(三)-- 时钟系统配置

本文详细讲解了STM32H743时钟系统的配置方法,重点解析了为何选择400MHz而非理论极限480MHz作为稳定运行的主频。通过STM32CubeIDE环境,手把手指导如何从外部晶振配置、电源电压设置到PLL锁相环参数调整,最终实现稳定可靠的400MHz系统时钟,并提供了代码验证与常见问题排查指南。

weixin_29164185的博客 368

LeetCode 101. 对称二叉树(剑指 Offer 28. 对称的二叉树)

剑指 Offer 28. 对称的二叉树 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 示例 1: 输入:root = [1,2,2,3,4,4...

梦~' 518

SAP FI 提示没有为会计年度0 定义版本2025 GP626

SAP 错误 GP626 是一个常见的系统消息,通常表示某个会计年度的版本(如版本 0)未被定义或未激活。:在执行某些事务(如创建采购订单、过账凭证或维护成本中心)时,系统会检查相关版本是否已定义。的“Settings for Each Fiscal Year”界面中,选择一个已激活的会计年度。的“Settings for Each Fiscal Year”界面中,找到未激活的会计年度。:在控制范围(Controlling Area)中,未为指定的会计年度定义版本 0。如果没有,添加或复制现有年度的设置。

GAVIN 2487

Sigrity XtractIM实战:5步搞定IC封装宽带模型提取(附BGA案例)

本文通过一个典型BGA封装案例,详细介绍了使用Cadence Sigrity XtractIM工具进行IC封装宽带模型提取的五步实战流程。内容涵盖从环境准备、参数设置、结果验证到模型导出的完整操作,重点阐述了如何利用XtractIM生成高精度、紧凑的宽带SPICE模型,以解决高速电路设计中因封装模型不准导致的信号与电源完整性问题,助力工程师提升仿真精度与设计效率。

a1b2c的博客 319

LeetCode第101题----对称二叉树

本文将较详细的叙述LeetCode第101题的解题思路和解题步骤,希望能帮到大家。

F & F的博客 646

即插即用系列(代码实践) | CVPR 2025 FDConv:频域动态卷积,打破密集预测任务的参数效率瓶颈

本文提取自 CVPR 2025 的最新底层算子革新论文《Frequency Dynamic Convolution for Dense Image Prediction》。近年来,动态卷积(Dynamic Convolution)通过融合多个并行卷积核极大地提升了模型性能,但研究表明:这些并行卷积核在频域上的响应高度相似,导致了极其严重的参数浪费,且缺乏对不同频率特征的自适应能力。本文复现了该网络的核心架构——FDConv(频率动态卷积)。该方案创造性地在傅里叶域(Fourier Domain)中学习固定参

分享顶会顶刊论文即插即用模块 108

LeetCode 101.对称二叉树(DFS、BFS)

给定一个二叉树,检查它是否是镜像对称的。

晴空๓ 5225

x2-DFD:A framework for explainable and explainable deepfake detection

该文章提出了X2-DFD框架,用于可解释和可扩展的深度伪造检测。通过评估大型多模态语言模型(MLLMs)在深度伪造检测中的内在能力,发现它们在不同伪造相关特征上的有效性各异。基于此,实施了针对性的微调策略,显著提高了MLLMs的解释能力,并整合了外部深度伪造检测器(EDDs),以结合MLLMs和传统检测器的互补优势,实现更好的检测和解释。

志在山顶的人,不会贪念山腰的风景 509

uniapp - 解决苹果ios真机运行报错:错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配(HbuilderX运行IOS手机出现问题,uniapp运行到IOS真机提示请查看是否设备未)

uni-app,ios苹果,App平台端,uniapp运行到IOS真机提示错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UUID在哪里,uniApp运行到ios真机报错解决,安装自定义基座App失败,没找到有计划资源,证书、标识符和描述文件,证书标识符和描述文件下面没有选项怎么回事,HBuilder真机调试报错请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UniApp运行到IOS真机提示,授权的设备才可以直接安装基座,添加调试的IOS设备,在Devices中,添加手机设备UUID

🏆 前端领域优质创作者 1万+

LeetCode 力扣 101. 对称二叉树

题目描述(简单难度) 判断一个二叉树是否关于中心轴对称。 解法一 和 100 题 判断两个二叉树是否相等其实是一样的思路,都是用某种遍历方法来同时遍历两个树,然后看是否对应相等。 这里的需要遍历的两个树就是左子树和右子树了。 这里的对应相等的话,因为判断左子树 A 和右子树 B 是否对称,需要判断两点。 A 的根节点和 B 的根节点是否相等 A 的左子树和 B 的右子树是否相等,同时 A 的右...

wind_liang的博客 906

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode 101 ----- 对称二叉树

LeetCode 101 ----- 对称二叉树 题目描述 给定一个二叉树,检查它是否是镜像对称的。 思路 **对称,可以看做镜像 根节点为 null,则为对称二叉树 如果两个数都是空树,算镜像 两个数一个为空,有个非空,则不是镜像 如果两个树都不为空 a)比较根节点是不是相同,不相同就不是镜像 b)递归比较子树,t1.left 和 t2.right , t1.right 和 t2.left 是...

lsy18392609095的博客 170

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

101. 对称二叉树【 力扣(LeetCode) 】

给你一个二叉树的根节点 root , 检查它是否轴对称。进阶:你可以运用递归和迭代两种方法解决这个问题吗?

yyh520025的博客 1234

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

瑞_力扣LeetCode_101. 对称二叉树

本文章为瑞_系列专栏之《刷题》的力扣LeetCode系列,主要以力扣LeetCode网的题进行解析与分享。力扣LeetCode_101. 对称二叉树

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1389

Leetcode 101. 对称二叉树

Leetcode 101. 对称二叉树1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/symmetric-tree/   本质上就是一个二叉树的深度优先搜索问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std; #include "a

珍惜 8861

力扣 101 对称二叉树【递归三步法】

力扣 101 对称二叉树【递归三步法】 文章目录力扣 101 对称二叉树【递归三步法】全部刷题与学习记录原题目考查知识点自己的第一遍解法好的解法 全部刷题与学习记录 【C++刷题学习笔记目录】 【C++百万并发网络通信-笔记目录】 原题目 题目地址:101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3

日月既往,不可复追 485

【力扣】101.对称二叉树

力扣 101题对称二叉树 c++解法

Father_Of_Soft的博客 315

LeetCode 101对称二叉树

LeetCode 101对称二叉树 题目简述:给定一个二叉树,检查它是否是镜像对称的。 二叉树 [1,2,2,3,4,4,3] 是对称的,但是 [1,2,2,null,3,null,3] 则不是镜像对称的 思路:递归O(n) 两个子树互为镜像当且仅当: 两个子树的根节点值相等; 第一棵子树的左子树和第二棵子树的右子树互为镜像,且第一棵子树的右子树和第二棵子树的左子树互为镜像; class Solution { public: bool cmp(TreeNode* p, TreeN

XBlog 168

LeetCode101(力扣101):对称二叉树 C++

101.对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个问题吗? 我提交的代码 class Solution { public: bool isDCtre

VegetableGirl的博客 507

《LeetCode力扣练习》第101题 对称二叉树 Java

《LeetCode力扣练习》第101题 对称二叉树 Java 一、资源 题目: 给你一个二叉树的根节点 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 进阶:你可以运用递归和迭代两种方法解决这个问题吗? 来源:力扣(LeetC

XRT_knives的博客 297
上一篇: Leetcode 100. 相同的树
下一篇: Leetcode 102. 二叉树的层次遍历
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值