【LeetCode算法】第101题:对称二叉树

news2025/1/23 5:59:00

目录

一、题目描述

二、初次解答

三、官方解法

四、总结


一、题目描述

二、初次解答

1. 思路:递归判定左子树和右子树是否对称。用一个新函数sym来递归判定左子树和右子树是否对称。该函数细节:判定当前传入的两个根节点是否为空,若均为空则返回true,若只有其中一个为空则返回false,若两个根节点的值不同则返回false,否则递归判断根节点1的左子树与根节点2的右子树是否相同并判断根节点1的右子树与根节点2的左子树是否相同。

2. 代码:

bool sym(struct TreeNode* root1, struct TreeNode* root2){
    if(!root1 && !root2)
        return true;
    if(!root1 || !root2)
        return false;
    if(root1->val != root2->val)
        return false;
    return sym(root1->left, root2->right) && sym(root1->right, root2->left);
}

bool isSymmetric(struct TreeNode* root) {
    return sym(root->left, root->right);
}

3. 优点:仅遍历一遍,时间复杂度为O(n)。

4. 缺点:采用了递归,空间复杂度为O(n)。

三、官方解法

官方解法一与上述方法相同。官方解法二采用迭代方式但需要手动维护队列空间,时间复杂度与空间复杂度与解法一相同,但是代码量更大,因此此处不展开说明。

四、总结

判定二叉树左右子树是否对称,可以递归判定根节点的左子树和右子树是否对称。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1718963.html

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

相关文章

移动电商服务器单点部署

知识图谱 任务一:Web服务器部署 1.知识结构 2.WEB服务器的介绍 Web服务器一般指网站服务器,是指驻留于因特网上提供某种特定类型计算机的程序,Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界…

23种软件设计模式——工厂模式

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。 工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。 通过使…

laravel项目配置Facades Redis自动补全,方法查看

问题原因: 因为Laravel的Redis连接实例是通过RedisManger的工厂类创建的,返回的是一个mixin的类型,因此在IDE中不能自动补全Redis的方法,缺少这个功能,使用起来有些麻烦,尤其是Redis有数十个方法,每个方法也有不少参数。 相关部分的代码如下: /*** @mixin \Illumina…

【Python】解决Python报错:AttributeError: ‘generator‘ object has no attribute ‘xxx‘

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

python weakref的应用举例

问题: 有很多时候, 我们想拥有一个实例, 但是不增加引用计数. 怎么解决呢? 场景: 英雄击打怪物, 如果怪物在受到英雄打击前就死了, 我们可以在英雄的实例里面, 使用一个弱引用来引用怪物, 如果还存在就击打, 不存在就不击打.一般的ui系统都有事件系统, ui上触发一个事件, 然…

TCP协议详解及其相关的10个核心机制(面试重点)

TCP协议的报文格式 TCP协议有连接,可靠性传输,面向字节流,全双工。 他的数据格式如图: 根据他的数据格式,在这里我们只知道 16位源端口号(表示客户端这里的端口号),16位目的端口号&…

Maven 中的 classifier 属性用过没?

最近训练营有小伙伴问到松哥一个关于 Maven 依赖的问题,涉及到 classifier 属性,随机问了几个小伙伴,都说工作中没用到过,因此简单整篇文章和小伙伴们分享下。 Maven 大家日常开发应该都有使用,Maven 中有一个比较好玩…

读:《An Overview of Diffusion Models Applications……》导览

读:《An Overview of Diffusion Models: Applications,Guided Generation, Statistical Rates and Optimization》 简单说明 这篇文章也是关于 Diffusion 模型的综述,但是这一篇讲的显然不如 2022出的这篇综述 [2209.00796] Diffusion Models: A Compreh…

微信小程序-网络数据请求(配置request合法域名)

1.小程序中网络数据请求的限制 出于安全方面的考虑,小程序官方对数据接口的请求做出了如下两个限制: (1)只能请求HTTPS类型的接口 (2)必须将接口的域名添加到信任列表中 如果要请求某个域名下的接口&am…

优化基础(二):线性组合、仿射组合、锥组合、凸组合、线性集合、仿射集合、锥集合、凸集合的理解

文章目录 前言组合线性组合 (linear combination)仿射组合 (affine combination)锥组合 (conic combination)凸组合 (convex combination) 集合仿射集合凸集合 练习:哪个图形是凸的,哪个是仿射的?参考资料 前言 组合侧重于描述由一些基点生成…

MySQL数据库--从创建数据库到删库跑路

目录 MySQL安装: 1. 数据库基本操作1.1 创建数据库1.2 显示当前数据库1.3 删除数据库1.4 使用数据库/选中数据库 2. SQL中的数据类型2.1 数值类型2.2 字符串类型2.3 时间类型 3. 表的操作3.2 创建表3.1 显示数据库中的表3.3 查看表的详细情况3.4 删除表3.5 注释3. 修改列(了解即…

超大功率光伏并网逆变器学习(三相)

1.超大功率用的IGBT开关频率通常很低,比如6KHz 2.线电压和相电压的关系 相电压 A AB线电压-CA线电压 相电压 B BC线电压-AB线电压 相电压 C CA线电压-BC线电压 3.坐标变换 ABC三相信号通过Clark坐标变换得到αβ两相静止信号,其中α与A相重合,β与α…

用任务监听RTOS各任务的运行状态

使用rtos时内存对于单片机来说总是非常抠搜的。 任务分配多了浪费,少了跑不动。 最近看到这个监听任务还是很好用的。 废话不多说。开始操作 第一步在配置文件中打开这几个宏 #define configUSE_TRACE_FACILITY 1 /*为1时启用可视化跟踪调试*/ #define conf…

VBA代码解决方案第十四讲 如何利用VBA检查单元格中是否含有公式

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…

[论文笔记]MemGPT: Towards LLMs as Operating Systems

引言 今天介绍一篇论文MemGPT: Towards LLMs as Operating Systems。翻过过来就是把LLM看成操作系统。 大语言模型已经在人工智能领域引起了革命性的变革,但受到有限上下文窗口的限制,在扩展对话和文档分析等任务中的效用受到了阻碍。为了能够利用超出…

短视频自己怎么配音:四川京之华锦信息技术公司

短视频自己怎么配音:揭秘配音技巧与创作流程 在短视频盛行的当下,配音作为提升视频质量、增强观众体验的重要环节,越来越受到创作者的关注。四川京之华锦信息技术公司将为您详细解读如何为短视频自己配音,包括配音技巧、创作流程…

echarts学习:将echats实例代理为响应式对象可能带来的风险

1.起源 最近我在学习如何封装echarts组件,我所参考的其中一篇博客中提到了一个“图表无法显示的问题”。 根据其中的介绍,造成此种问题的原因是因为,使用ref接受了echarts实例,使得echarts实例被代理为了响应式对象,进…

【移动端】商场项目路由设计

1:路由设计配置: 一级路由配置 分析项目,设计路由,配置一级路由 一级路由:单个页面独立展示的,都是一级路由,例如:登录页面,首页架子,报错页面 二级路由&…

特征工程技巧——OneHot编码

我们以Kaggle比赛里面的一个数据集跟一个公开代码为例去解释我们的OneHot编码。 简单来说,独热编码是一种将类别型变量转换为二进制表示的方法,其中每个类别被表示为一个向量,向量的长度等于类别的数量,其中只有一个元素为1&…

STM32使用ST-LINK下载程序中需要注意的几点

使用keil5的ST-link下载界面 前提是ST-LINK已经连接好,(下图中是没有连接ST-link设备),只是为了展示如何查看STlink设备是否连接的方式 下载前一定设置下载完成后自启动 这个虽然不是必须,但对立即看到新程序的现象…