6.5对称二叉树(LC101-E)

news2025/1/11 7:55:10

算法:

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

比较的时候:

比较外面的节点是否相等,如示例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 True
        else:
            res = self.compare(root.left, root.right)
        return res
#定义一个compare函数,用来比较左右子树
#具体比较就是外面的和外面的比,里面的和里面的比
    def compare(self, left, right) -> bool:
        #排除一些绝对不对称的情况:
        if left == None and right != None:
            return False
        if right == None and left != None:
            return False
        if right == None and left == None:
            return True
        if right and left:
            outside = self.compare(left.left,right.right)
            inside = self.compare(left.right,right.left)
            issame = outside and inside
            return issame
    

时间空间复杂度:

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

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

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

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

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

相关文章

开放式耳机井喷阶段,南卡品牌何以成为“头号玩家”?

对于耳机行业而言,过去两年的聚光灯属于开放式耳机这一才闯入赛道的品类。 在消费电子寒冬持续蔓延的时间节点,夺下属于自己的高光时刻实属不易,毕竟无论是过去数年间高歌猛进的智能可穿戴设备行业,还是更垂直的耳机赛道,现阶段均面临承压的局面。 一面是“前辈”们昔日的“爆…

HTB——常见端口及协议总结

文章目录 一、 常见端口二、HTTP协议三、FTP四、SMB 一、 常见端口 http协议:80、8000https协议:443、8443ftp协议:20(数据传输)、21(发送命令)smb协议:445 二、HTTP协议 https的…

【电源专题】POE 802.3af/at与802.3bt在握手阶段有什么差异

在文章:【电源专题】PSE如何与PD握手协商功率等级?中我们以PSE与PD设备在802.3af/at协议握手为例,讲到了PSE与PD协商时通过三个阶段:检测阶段、握手阶段、电压提升阶段。而对于802.3bt的握手存在明显的不同,所以本文就详细解释一下802.3bt协议为什么握手阶段与802.3af/at存…

《RN移动开发实战》3出版了,文末抽奖

前言 众所周知,传統的原生Android、iOS开发技术虽然比较成熟,但是多端重复开发的成本和开发效率的低下也是很多企业不愿意看到的,而不断崛起的跨平台技术让企业看到了曙光,“一次编写,处处运行”也不再是难以企及的目…

Mac上好用的翻译软件推荐 兼容m

Mac翻译软件可以用在学习,工作,生活当中,一款好用的翻译软件,具有翻译准确,翻译快速等基本特点,能够帮您提高工作效率。Mac上有什么好用的翻译软件呢?今天小编为大家整理了6款好用的Mac翻译软件…

YOLOv7改进:RefConv | 即插即用重参数化重聚焦卷积替代常规卷积,无额外推理成本下涨点明显

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点 3.涨点效果:RefConv,实现有效涨点! 论文地址 …

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

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

【算法】最短路计数(计算最短路的数量)

题目 给出一个 N 个顶点 M 条边的无向无权图,顶点编号为 1 到 N。 问从顶点 1 开始,到其他每个点的最短路有几条。 输入格式 第一行包含 2 个正整数 N,M,为图的顶点数与边数。 接下来 M 行,每行两个正整数 x,y,表示有…

Scrum Master 如何更好的支持PO?

在过去几年中,和许多Scrum Master交流时,我遇到一个令人担忧的模式。虽然我们有Scrum指南和其他补充资源,许多Scrum Master,特别是刚起步的Scrum Master们,还在日复一日的为如何帮助Product Owner而挣扎着。 以下是我…

《QT从基础到进阶·十九》QThread多线程使用

1、平时在写多线程的时候有时候会遇到下面一种情况: 情景: this是主线程,model是子线程,把model move到线程后可以在主线程通过emit开启子线程,emit CalcuSignal();开启子线程执行StartCalculateAll,里面有…

SpringBoot+MybatisPlus Restful示例

增删改查,分页 CREATE TABLE tbl_book ( id int NOT NULL AUTO_INCREMENT, type varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, name varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, desc_ription varchar(255) CHAR…

JavaScript基础入门04

目录 1.WebAPI 背景知识 1.1什么是 WebAPI 1.2什么是 API 2.DOM 基本概念 2.1什么是 DOM 2.2DOM 树 3.获取元素 3.1querySelector 3.2querySelectorAll 4.事件初识 4.1基本概念 4.2事件三要素 4.3简单示例 5.操作元素 5.1获取/修改元素内容 5.2获取/修改元素属性…

微服务版mall电商项目本地开发环境启动前后端服务详细指导教程

微服务版mall电商项目本地开发环境启动前后端服务详细指导教程 前言1 克隆mall-swarm 电商项目源码2 安装启动mall-swarm项目需要的第三方服务2.1 安装MySql8 并初始化数据2.2 安装Nacos2.3 安装Redis2.4 RabbitMQ安装2.5 ElasticSearch安装2.6 MongoDB安装2.7 Minio安装 3 启动…

多目标优化框架

随着模型越来越复杂,优化目标越来越多,传统算法都慢慢地无法胜任复杂优化任务,更为智能的优化方法也就应运而生了。其中有一类是进化优化算法,这类算法的思想来源是自然界的“优胜劣汰”法则,通过不停地保留好的个体最…

Linux学习-破解Root密码

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

浅谈工厂电能管理系统改造与产品选型

叶根胜 安科瑞电气股份有限公司 上海嘉定202001 摘要:随着经济的快速发展,能源紧张和环境恶化引起了全世界的密切关注。电能在所有能源中消耗量大,但不可或缺,因此对电能的统一管理尤为重要。只有准确可靠的计量电能、分级管理和…

显卡服务器租用价格受哪些因素影响

显卡服务器也叫做GPU服务器,是一种有高性能显卡的服务器系统,显卡服务器能在大数据处理、科学计算等领域有很好的性能表现。今天小编就给大家讲一讲显卡服务器租用价格受哪些因素影响呢? 1.显卡类型和数量:一般说来中高端显卡的租…

【华为OD题库-007】代表团坐车-Java

题目 某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车,可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案,输出方案数量。 约束: 1.一个团只能上一辆车&#xff0…

性格软弱怎么办?如何改变性格软弱?

软弱指的是身体衰弱无力气,而这里要说的是性格软弱,性格软弱的人,大多是不自信的,无主见,容易妥协,害怕产生矛盾,遇到问题就想逃避,自我否定,担心自己这也不行那也不行。…

剑指JUC原理-18.同步协作

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…