6.5对称二叉树(LC101-E)

算法:

其实就是比较左右子树是否可以翻转

比较的时候:

比较外面的节点是否相等,如示例1中的节点3

比较里面的节点是否相等,如示例1中的节点4

基本思路是这样的,那怎么遍历呢?

二叉树的题一定要掌握到底用哪种遍历来解决题目,这样才能理解得更深刻!

这道题一定是后序遍历!

因为我们要搜集孩子信息,返回上一层,比如:

左子树:我们要搜集3(L) 4(R)的信息,返回给2

右子树:我们要搜集3(R) 4(L)的信息,返回给2

这样才能比较2.left和2.right是否对称

调试过程:

递归法:

原因:compare函数的定义不对,我定义的输入一个节点,但实际调用的是两个指针。

compare函数定义时的输入应该是两个子树,left和right

修改后还是报错了,发现是对空树的理解不对,空树被认为是对称的,而我以为不对称,改过来就好了。

正确代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def isSymmetric(self, root: Optional[TreeNode]) -> bool:if root == None:return Trueelse:res = self.compare(root.left, root.right)return res
#定义一个compare函数,用来比较左右子树
#具体比较就是外面的和外面的比,里面的和里面的比def compare(self, left, right) -> bool:#排除一些绝对不对称的情况:if left == None and right != None:return Falseif right == None and left != None:return Falseif right == None and left == None:return Trueif right and left:outside = self.compare(left.left,right.right)inside = self.compare(left.right,right.left)issame = outside and insidereturn issame

时间空间复杂度:

时间复杂度:
`isSymmetric`函数会递归调用`compare`函数。在`compare`函数中,我们比较给定二叉树的左子树和右子树。由于每个节点只访问一次,时间复杂度为O(n),其中n是二叉树中的节点数。

空间复杂度:
空间复杂度取决于递归栈的最大深度。在最坏的情况下,当二叉树是倾斜的且高度为n时,空间复杂度为O(n)。这是因为在任何时刻,递归栈最多可以容纳n个函数调用。

总体而言,时间复杂度为O(n),空间复杂度在最坏情况下为O(n)。

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

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

相关文章

更安全的ssh协议与Gui图形化界面使用

目录 前言: 一.Gui图形化界面的使用 二.ssh协议 SSH的主要作用包括: 相比其他网络协议,SSH的优势包括: 三.idea集成Git 前言: 上一篇讲解了git的命令用法以及https协议,但是这个协议放在做团队项目的…

Git系列之Git集成开发工具及git扩展使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Git实战开发》。🎯🎯 &a…

我的月光宝盒初体验失败了

哈哈哈,我爱docker, docker 使我自由!!! docker make me free! 菠萝菠萝蜜口号喊起来。 https://github.com/vivo/MoonBox/ windows上安装好了docker之后,docker-compose是自带的。 docker-compose -f docker-compo…

王学岗visibility改变后调用onLayout()

自定义控件的时候发现了一个bug。 Button位移动画执行结束后我设置了一个不相关的TextView的可见性由gone变为visible.令人郁闷的是,只要我注释的地方放开。动画执行结束后button都会重新绘制在位移动画开始的位置。注释掉这段代码就正常。 经过分析后得知 View的Vi…

C# OpenCvSharp DNN HybridNets 同时处理车辆检测、可驾驶区域分割、车道线分割

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Numerics; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_D…

城市内涝积水的原因有哪些?万宾科技内涝积水监测仪工作原理

一旦有暴雨预警出现多地便会立即响应,以防城市内涝问题出现。随着人口迁移,越来越多的人口涌入城市之中,为了完善城市基础设施建设,城市应急管理部门对内涝的监测越来越严格,在信息化时代,城市管理也趋向于…

G2406C是一款高效的直流-直流降压开关稳压器,能够提供高达1A输出电流。

G2406C 1.5MHz,1A高效降压DC-DC转换器 概述: G2406C是一款高效的直流-直流降压开关稳压器,能够提供高达1A输出电流。G2406C在2.7V至5.5V的宽范围输入电压下工作,使IC是低压电源转换的理想选择。在1.5MHz的固定频率下运行允许使用具有小电感…

【C++】异常 智能指针

C异常 & 智能指针 1.C异常1.1.异常的抛出与捕获1.2.异常体系1.3.异常安全与规范1.4.异常优缺点 2.智能指针2.1.RAII2.2.智能指针的使用及原理2.2.1.auto_ptr2.2.2.unique_ptr2.2.3.shared_ptr2.2.4.shared_ptr的循环引用问题 & weak_ptr 2.3.定制删除器 1.C异常 C异常…

伦敦金冬令时开市时间怎样调整

在刚刚过去的一周,欧美的金融市场已经正式进入了冬令时,这对伦敦金市场的交易时间也产生了影响。由于美国于今年11月5日(星期日)开始正式实施冬令时间,所以香港的伦敦金平台的交易时间也随之而有所调整。 从今年11月6日开始&#…

增强地理热图:Highcharts Maps v11.2.0 Crack

Highcharts Maps v11.2.0 添加了对地理热图插值的支持,允许您在类似温度图的图表的已知数据点之间添加估计值。 Highcharts Maps 提供了一种符合标准的方法,用于在基于 Web 的项目中创建逻辑示意图。它扩展了用户友好的 Highcharts JavaScript API&#…

Milvus Cloud——什么是 Agent?

什么是 Agent? 根据 OpenAI 科学家 Lilian Weng 的一张 Agent 示意图 [1] 我们可以了解 Agent 由一些组件来组成。 规划模块 子目标分解:Agent 将目标分为更小的、易于管理的子目标,从而更高效地处理复杂的任务。 反省和调整:Agent 可以对过去的行为进行自我批评和自我反思…

pyOCD

pyOCD 目录结构

Linux的目录的权限

目录 目录的权限 目录的权限 1、可执行权限: 如果目录没有可执行权限, 则无法cd到目录中. 2、可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 3、可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件. 上面三个权限是…

微信小程序前端开发

目录 前言: 1. 框架选择和项目搭建 2. 小程序页面开发 3. 数据通信和接口调用 4. 性能优化和调试技巧 5. 小程序发布和上线 前言: 当谈到微信小程序前端开发时,我们指的是使用微信小程序框架进行开发的一种方式。在本文中,我…

划分VOC数据集,以及转换为划分后的COCO数据集格式

1.VOC数据集 LabelImg是一款广泛应用于图像标注的开源工具,主要用于构建目标检测模型所需的数据集。Visual Object Classes(VOC)数据集作为一种常见的目标检测数据集,通过labelimg工具在图像中标注边界框和类别标签,为…

AIGC视频生成/编辑技术调研报告

人物AIGC:FaceChain人物写真生成工业级开源项目,欢迎上github体验。 简介: 随着图像生成领域的研究飞速发展,基于diffusion的生成式模型取得效果上的大突破。在图像生成/编辑产品大爆发的今天,视频生成/编辑技术也引起…

Milvus Cloud——LLM Agent 现阶段出现的问题

LLM Agent 现阶段出现的问题 由于一些 LLM(GPT-4)带来了惊人的自然语言理解和生成能力,并且能处理非常复杂的任务,一度让 LLM Agent 成为满足人们对科幻电影所有憧憬的最终答案。但是在实际使用过程中,大家逐渐发现了通…

conda环境中pytorch1.2.0版本安装包安装一直失败解决办法!!!

conda环境中pytorch1.2.0版本安装包安装一直失败解决办法 cuda10.0以及cudnn7.4现在以及安装完成,就差torch的安装了,现在torch我要装的是1.2.0版本的,安装包以及下载好了,安装包都是在这个网站里下载的(点此进入&…

Kali常用配置(持续更新)

1. 同步系统时间 命令:dpkg-reconfigure tzdata ,这个命令可以同时更新系统时间和硬件时间。 然后选择区域和城市,中国可以先选择Asia,然后选择Shanghai 2.更换系统数据源 # vim /etc/apt/sources.list #不是root用户的话需要…

Linux学习-破解Root密码

破解root密码思路 1)重启系统,进入 救援模式 开启虚拟机A,在此界面按e键 在linux开头的该行,将此行的ro修改为rw 然后空格输入 rd.break 按 ctrl x 启动,会看到switch_root:/# 2)切换到硬盘操作系统环境 # chroot …