【LeetCode刷题(数据结构)】:另一颗树的子树

news2024/10/5 23:30:35

在这里插入图片描述

给你两棵二叉树 root 和 subRoot 检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false
二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树
在这里插入图片描述
输入:root = [3,4,5,1,2], subRoot = [4,1,2]
输出:true
在这里插入图片描述
输入:root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]
输出:false

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

bool compare (struct TreeNode* p1,struct TreeNode* p2)
{
    if(!p1&&!p2) return true;
    if(!p1||!p2) return false;
    if(p1->val!=p2->val) return false;
    return compare(p1->left,p2->left)&&compare(p1->right,p2->right);
}
bool isSubtree(struct TreeNode* s, struct TreeNode* t){
    if(!s) return false;
    return compare(s,t)||isSubtree(s->left,t)||isSubtree(s->right,t);
}

首先:compare函数是比较两棵树是否相等的函数,因为如果一棵树是另一棵树的子树,那么必定存在这棵树和另一棵树的子树相等。而compare函数利用了遍历树的常规思路——递归
首先比较根节点,若根节点同时为空,则两树相等。
若其中一个为空,另一个非空,则两树不等。
若节点上的数值不等,则两树不等。
剩下的就是,节点上的数值相等,进而要向下比较它们的子树是否相等,使用递归,分别比较左右子树是否相等,注意:一定要都相等才可以
接下来,isSubtree函数也是利用了递归的思想写出来的,
如果递归到最后,s都已经为空了,那么再无相等可言,return false;
否则的话,按照根左右的方法来进行比较,由递归可知,只要存在完全相等的部分,函数的返回值就是真的

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

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

相关文章

PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五)

PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五) 一、算法介绍二、具体实现1.代码2.效果一、算法介绍 继续SIFT关键点的提取介绍,之前已经基于高程和颜色分别提取了关键点,这里是基于强度信息,若遇到文件无法读取强度问题,请参考上一篇博文,下面是具体的实现…

SQL语句-中级

一、Mysql软件使用 1.启动/停止Mysql服务器 任务管理器 cmd命令:以管理员的身份打开cmd命令行 net start mysql80//开启net stop mysql80//停止 2.连接与断开Mysql服务器 注意要在bin目录下执行:-u用户名root,-p密码 mysql -u root -p 可能出现的…

物联网AI MicroPython传感器学习 之 TEA5767 FM收音机模块

学物联网,来万物简单IoT物联网!! 一、产品简介 TEA5767 FM收音机模块是工作频率在76MHz~108MHz的自动数字调谐收音机。其特点高灵敏度、高稳定、低噪声,内部集成了中频选频和解调网络。 引脚定义 GND:接…

School‘s Java test

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻第四周素数和念整数 &#…

SSM+springboot+vue+java企业公寓员工宿舍后勤管理网站

论文主要是对后勤管理系统进行了介绍,包括研究的现状,还有涉及的开发背景,然后还对系统的设计目标进行了论述,还有系统的需求,以及整个的设计方案,对系统的设计以及实现,也都论述的比较细致&…

24字符串-kmp寻找重复子串

目录 字符串匹配——kmp算法 LeetCode之路——459. 重复的子字符串 分析: 字符串匹配——kmp算法 强烈建议参考Carl的讲解: 视频讲解版:帮你把KMP算法学个通透!(理论篇)(opens new window) 视频讲解版&…

使用Plotly可视化

显示项目受欢迎程度 改进图表 设置颜色,字体

400电话-400电话办理-400号码办理

400电话是一种特殊的电话号码,以"400"开头,通常用于企业客户服务、售后支持等方面。随着互联网的发展,越来越多的企业开始意识到400电话的重要性,并积极办理400号码。 首先,办理400电话可以提升企业形象和信…

【音视频|ALSA】SS528开发板编译Linux内核ALSA驱动、移植alsa-lib、采集与播放usb耳机声音

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

ArcGIS笔记4_水动力模型验证不理想时如何修改局部水深地形

本文目录 前言Step 1 模型验证不理想的情况Step 2 修改确值点并重新插值 前言 本章主要服务于MIKE水动力模型的调整修改工作。水动力模型跑完之后,常常会出现验证结果不理想的情况,比如潮位验证中,实测站点数据与模拟数据相差很大&#xff0…

【计算机组成体系结构】移码 | 定点小数的表示和运算

一、移码 上篇我们提到了原码,反码和补码的表示形式和如何转换。这篇我们会提到一个新的概念—移码。移码也很简单,其实就是在补码的基础上把符号取反即可。 值得注意的是,移码只能表示整数。而原码,反码和补码既可以表示整数又…

软件工程与计算总结(十一)人机交互设计

目录 ​编辑 一.引例 二.目标 三.人类因素 1.精神模型 2.差异性 四.计算机因素 1.可视化设计 2.常见界面类型 五.人机交互设计的交互性 1.导航 2.反馈 3.设计原则 六.设计过程 1.基本过程 2.界面原型化 一.引例 无论软件功能多么出色,亦或内部的构造…

具有标记和笔记功能的文件管理器TagSpaces

什么是 TagSpaces ? TagSpaces 是一款免费、无供应商锁定的开源应用程序,用于借助标签组织、注释和管理本地文件。它具有高级笔记功能和待办事项应用程序的一些功能。该应用程序适用于 Windows、Linux、Mac OS 和 Android。并已经为 Firefox、Edge 和 Ch…

【Android知识笔记】图片专题(BitmapDrawable)

如何计算一张图片的占用内存大小? 注意是占用内存,不是文件大小可以运行时获取重要的是能直接掌握计算方法基础知识 Android 屏幕像素密度分类: (其实还有一种 ldpi = 120,不过这个已经绝种了,所以最低的只需关心mdpi即可) 上表中的比例为:m : h : xh : xxh: xxxh = …

java springboot 通过ConfigurationProperties给第三方bean注入属性

之前我们的文章 java boot将一组yml配置信息装配在一个对象中 讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类 但 这建立在 bean是自己定义的 如果 这是个第三方的类呢? 就比如 我们在 application 中写了一套数据源的加载规则 但需要用第…

无法启动此程序,因为计算机中丢失MSVCR71.dll的详细解决修复方法

大家好!今天我来给大家分享一下msvcp71.dll丢失的修复方法。 首先,让我们来了解一下msvcp71.dll文件。msvcp71.dll是一个动态链接库文件,它是Microsoft Visual C 2010 Redistributable Package所包含的一个文件。这个文件被许多软件和游戏需…

Web攻防01-ASP应用相关漏洞-HTTP.SYSIIS短文件文件解析ACCESS注入

文章目录 ASP-默认安装-MDB数据库泄漏下载漏洞漏洞描述 ASP-中间件 HTTP.SYS(CVE-2015-1635)1、漏洞描述2、影响版本3、漏洞利用条件4、漏洞复现 ASP-中间件 IIS短文件漏洞1、漏洞描述2、漏洞成因:3、应用场景:4、利用工具:5、漏洞…

计算机毕业设计选什么题目好?springboot 研究生管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

普冉PY32系列(八) GPIO模拟和硬件SPI方式驱动无线收发芯片XN297LBW

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志普冉PY32…

java气候分析平台天气预报系统springboot+vue

保护措施 (自动编号、图片、措施简介、措施地点、措施时间、创建时间、措施详情、措施名称); 报名信息 (自动编号、活动地点、图片、活动名称、活动时间、参与人数、活动详情、审核回复、创建时间、报名时间、手机、活动简介、是否审核、姓名、账号); 配…