力扣刷题笔记day10(树的子结构+二叉树镜像+对称的二叉树)

news/2024/5/19 5:27:31/文章来源:https://blog.csdn.net/weixin_51610980/article/details/128437459

文章目录

  • 树的子结构
    • 题目
    • 思路
    • 代码
  • 二叉树镜像
    • 题目
    • 思路
    • 代码
  • 对称的二叉树
    • 题目
    • 思路
    • 代码

树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。

题目

在这里插入图片描述

思路

dfs(A, B) 函数:
终止条件:
当节点 B为空:说明树 B 已匹配完成(越过叶子节点),因此返回 true ;
当节点 A为空:说明已经越过树 A 叶子节点,即匹配失败,返回 false ;
当节点 A和 B的值不同:说明匹配失败,返回 false;
返回值:
判断 AA 和 BB 的左子节点是否相等,即 recur(A.left, B.left) ;
判断 AA 和 BB 的右子节点是否相等,即 recur(A.right, B.right) ;
isSubStructure(A, B) 函数:
特例处理: 当 树 A为空 或 树 B 为空 时,直接返回 false ;
返回值: 若树 B是树 A 的子结构,则必满足以下三种情况之一,因此用或 || 连接;
以 节点 AA 为根节点的子树 包含树 BB ,对应 dfs(A, B);
树 B是 树 A左子树 的子结构,对应 isSubStructure(A.left, B);
树 B 是 树 A 右子树 的子结构,对应 isSubStructure(A.right, B)

代码

var isSubStructure = function (A, B) {if (A===null||B===null) return false;return dfs(A,B)||isSubStructure(A.left, B)||isSubStructure(A.right, B);
};function dfs(A,B) {if (B==null) return true;if (A==null) return false;return A.val===B.val&&dfs(A.left, B.left)&&dfs(A.right, B.right);}

二叉树镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

题目

在这里插入图片描述

思路

将二叉树的左右节点交换

代码

var mirrorTree = function(root) {if(root == null){return null}[[root.left,root.right]] = [[root.right,root.left]]mirrorTree(root.left)mirrorTree(root.right)return root
};

对称的二叉树

请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。

题目

在这里插入图片描述

思路

直接对比其左右节点

代码

var isSymmetric = root => {return isSymmetricCore(root, root)
}var isSymmetricCore = (n1, n2) => {// 两个空结点if (!n1&&!n2) return true// 一个为空,一个不为空if (!n1||!n2) return falseif (n1.val!==n2.val) return falsereturn isSymmetricCore(n1.left, n2.right) && isSymmetricCore(n1.right, n2.left)
}

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

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

相关文章

圣诞节,记录前行中跨过的2022

2022年,我人生的第二十四年,是我大学生活的最后一年,是我职场生涯的第一年,这一年从学生到打工人,从实习生到职场员工,变化了许多,做了许多,收获了许多,同时也成长了许多…

《教育的目的》笔记——如何让学生通过树木看见森林

目录 作者简介 个人感悟 经典摘录 1、学生所受的训练应该比他们最终投身的专业更为广泛 2、学习新语言用途 3、教师的责任 4、教育的主题 5、学到的有用之物 6、教育目的 7、所有事物都不是静态的、定型的,而是处于形成(becoming)过…

【C函数】函数详解

函数前言一、函数是什么二、C语言中函数的分类(一)库函数1.printf类2.strcpy类3.math类4.概念5.小知识6.总结(二)自定义函数1.概念2.函数的组成3.例子1(求出两个数中的最大值)4.例子2(交换两个整…

三、SpringBoot启动流程及自动化配置

一、Springboot启动流程 图一:Springboot项目的启动流程 首先,针对上图中自己不太明确的两个知识点,这里做如下总结: 1.Banner:参考这篇文章:SpringBoot之Banner介绍 - MarkLogZhu - 博客园 (cnblogs.com) ; 2.钩子方…

HRTransNet阅读理解

E. Dual-direction short connection fusion module HRFormer applies transformer blocks to enlarge receptive field of fused feature Frs, and uses exchange units to absorb the merits of multi-scales features. The process is described as: HRFormer使用TRM块来扩…

程序员过圣诞 | 用HTML写出绽放的烟花

文章目录一、前言二、创意名三、效果展示四、烟花代码五、总结一、前言 2022年圣诞节到来啦,圣诞节是基督教纪念耶稣诞生的重要节日。亦称耶稣圣诞节、主降生节,天主教亦称耶稣圣诞瞻礼。耶稣诞生的日期,《圣经》并无记载。公元336年罗马教会…

平衡二叉树的一系列操作:删除、插入(在二叉排序树中插入新结点后,如何保持平衡)、调整平衡等等等

平衡二叉树的插入(在二叉排序树中插入新结点后,如何保持平衡)1.平衡二叉树的定义2.平衡二叉树的插入(调整最小不平衡子树A)2.1LL(在A的左孩子的左子树中插入导致不平衡)2.2RR(在A的右…

qt嵌入并运行外部exe

由于项目需要,要实现将一个外部exe运行在qt的窗口中。下面记录一下过程: 首先就是在qt中创建一个新项目 由于我这里没有用到画布,所以没有勾选Generate form 然后就会自动生成一个可运行的代码 然后将我下边的代码替换粘贴进去 #includ…

cubeIDE开发, UART的CubeMX及HAL库实现原理及底层分析

一、UART通信协议 UART通用异步收发器(Universal Asynchronous Receiver and Transmitter)是STM32 上常用的串行通信外设,可以灵活地与外部设备进行全双工数据交换,需要注意区别: 【1】USART-通用同步异步收发器(Universal Synchronous Async…

stm32f407VET6 系统学习 day04 DHT11 温湿度传感器

1.温湿度的一次完整的数据包括: 一次完整的数据传输为40bit,高位先出。 数据格式: 8bit湿度整数数据 8bit湿度小数数据 8bi温度整数数据 8bit温度小数数据 8bit校验(校验和的值是前四个字节数据的和) 用户MCU发送一次开始信号后,DHT11从低功耗模式转…

UDP协议在Windows上使用示例

UDP(User Datagram Protocol,用户数据报协议)是无连接的,因此在两个进程通信前没有握手过程。UDP协议提供一种不可靠数据传送服务,也就是说,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收进程。…

为什么要使用 Compose 来开发 Android ?

1. Compose诞生背景 近年来,以React为代表的声明式UI开发思想席卷了整个前端开发领域。客户端与前端在产品形态上非常相似,也希望借鉴这种全新的开发思想来提升客户端UI的开发效率和体验。在这个大背景下,Android与iOS平台相继发布了自己的声…

node.js+uni计算机毕设项目互联网教育系统小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

Attetion is all you need论文阅读笔记

Attetion is all you need 参考:沐神( 沐神_论文精讲_Attention is all you need) 1、Abstract 主流的序列转录模型(给一个序列生成另一个序列,比如机器翻译,给一句英文,生成一句中文&#x…

Biotin-PEG-MAL,Maleimide-PEG-Biotin,生物素聚乙二醇马来酰亚胺

英文名称:Biotin-PEG-MAL,Maleimide-PEG-Biotin 中文名称:生物素聚乙二醇马来酰亚胺 Biotin-PEG-Mal,聚乙二醇化生物素对亲和素或链霉亲和素有很高的亲和力。生物素/亲和素体系在生物分子检测和分离中有着广泛的应用。马来酰亚胺…

【状态估计】电力系统状态估计中的异常检测与分类(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

LeetCode 1739. 放置盒子:数学 思维

【LetMeFly】1739.放置盒子 力扣题目链接:https://leetcode.cn/problems/building-boxes/ 有一个立方体房间,其长度、宽度和高度都等于 n 个单位。请你在房间里放置 n 个盒子,每个盒子都是一个单位边长的立方体。放置规则如下: …

408 考研《操作系统》第三章第二节:基本分页存储管理、两级页表、基本分段存储管理方式、段页式管理方式

文章目录教程1. 基本分页存储管理的基本概念1.1 连续分配方式的缺点1.2 把“固定分区分配”改造为“非连续分配版本”1.3 什么是分页存储1.4 如何实现地址的转换?1.5 逻辑地址结构1.6 重要的数据结构——页表1.7 知识回顾与重要考点2. 基本地址变换机构2.1 例题2.2 …

单链表的头插法与尾插法

一、基本概念 二、头叉法 该方法从一个空链表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头。采用头插法创建单链表时,读入数据的顺序与生成单链表的元素顺序是相反的。 LinkList L…

JavaScript操作BOM对象

BOM:浏览器对象模型 window代表浏览器窗口 >window.alert(1) undefined >window.innerHeight //浏览器内部高度 242 >window.innerWidth 1229 >window.outerHeight //浏览器外部高度 824 >window.outerWidth 1536 Navigator,封装了浏…