(力扣)另一颗树的子树

题目链接

目录

1.审题

2.解题思路

3.JAVA实现

 


1.审题

题目说的其实已经足够详细了,不过值得注意的是:

如果两颗树是相同的,那么也算真
 

2.解题思路

题目给定两颗树,root和subRoot,判断subRoot是否是root的子树。

看上去确实有些复杂,那我们就把他拆分成简单一点的问题。

重点来咯:

第一步 多创建一个方法 isSame,这个方法用来比较给定两颗树是否相等,相等返回真,否则假。

至于为什么,第二步会告诉你答案。^_^

第二步在题目所给的isSubtree方法中,递归遍历root树(不断更新root,而不改变要比较的subRoot)。在遍历中,调用第一步中的isSame方法,比较两颗树是否相同。

两棵树相同,即符合题意返回真。

若不相同,一直遍历root直到root为空,则返回假

对于isSame方法如何是实现

请点链接:相同的树

链接这道题目相当于解这道题的前置条件,不过都不难的,加油┗|`O′|┛ 嗷~~

3.JAVA实现

class Solution {

    public boolean isSubtree(TreeNode root, TreeNode subRoot) {

        // if(root==subRoot)return true;//相等一定只能是空的情况

        if(root==null&&subRoot!=null)return false;
        
        if(isSame(root,subRoot))return true;//当前节点开始,两颗树是一样的返回真

        boolean left=isSubtree(root.left,subRoot);
        boolean right=isSubtree(root.right,subRoot);

        //判断左右两个子树那个和subRoot相等,相等返回真,否则返回假
        return left==true?left:right;//left与子树相同,就返回Left,否则返回right,即使right也是假,那就是假
    }


    public boolean isSame(TreeNode root, TreeNode subRoot) {//判断所给的两颗树是否相同

        if(root==subRoot)return true;//两个相等只有为空的情况才是,两个数都是空树的情况
        if((root==null&&subRoot!=null)||(root!=null&&subRoot==null))return false;//结构不同返回假

        //下面判断元素是否相同
        if(root.val!=subRoot.val)return false;//两个值不相等,返回假

        //元素相等,判断判断左右子树是否相同,不相同返回假
        boolean left=isSame(root.left,subRoot.left);//判断左孩子是否相等
        boolean right=isSame(root.right,subRoot.right);//判断右孩子是否相等
        if(left==false||right==false)return false;//只要有一个是假,就返回假

        return true;
    }
}

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

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

相关文章

Kafka—ISR机制

ISR机制 Kafka 中的 ISR(In-Sync Replicas)机制是一种用于确保数据可靠性和一致性的重要机制。ISR 是一组副本,它包括分区的领导者(Leader)和追随者(Follower)副本,这些副本与领导者…

Redis(二十)五大经典类型源码

文章目录 面试题源码核心Redis基本的数据结构(骨架)Redis数据库的实现Redis服务端和客户端实现其他 K-V实现怎样实现键值对(key-value)数据库的传统五大基本数据类型和新五大数据类型 5大数据结构底层C语言源码分析示例redisObject五大数据结构解析定义Debug Object keyString …

用Python接单,一单800块虽然不多,但真的能够挣!

当今收入低于5000的人至少占到40%,完全不够养活一家人,而且很多小伙伴其实空余时间比较多,特别是大学生,零花钱又不够花,都想靠业余时间找点轻松的活增加收入。但是缺没门路,为此结合我多年编程开发经验&am…

【React】Ant Design社区扩展库之分割面板:react-resizable-panels

主角:react-resizable-panels 简介:来之Ant Design官方文档社区精选组件 1、效果 2、环境 react-resizable-panels: ^2.0.16next: 14.1.3react: ^18 3、安装 # npm npm install react-resizable-panels# yarn yarn add react-resizable-panels# pnpm …

python 如何向上取整

python向上取整 方法: Python match.ceil函数 ceil(x)函数是向上取整,即取大于等于x的最接近整数。 import math math.ceil(float(1)/2)

品牌软文怎么写?媒介盒子分享

品牌软文是品牌传播的主要方式。高质量的品牌软文能够帮助企业塑造正面的品牌形象,提高品牌知名度和影响力,扩大目标消费者范围。接下来媒介盒子就和大家聊聊:如何写好品牌软文。 一、 确立品牌独特点 品牌独特性是品牌能够与行业内其他品牌…

Offline RL : Efficient Planning in a Compact Latent Action Space

ICLR 2023 paper Intro 采用Transformer架构的Planning方法对马尔可夫序列重构,(et. TT)在面对高维状态动作空间,容易面对计算复杂度高的问题。本文提出TAP算法,基于Transformer的VQ-VAE,利用提取的状态动作在隐空间的低微特征进行Planning…

【LAMMPS学习】八、基础知识(2.4)恒温器

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

【JavaWeb】Day38.MySQL概述——数据库设计-DQL(一)

数据库设计——DQL 介绍 DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。 查询关键字:SELECT 查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使用频次…

2024妈妈杯Mathorcup数学建模竞赛选题建议

关于十四届妈妈杯题目点击链接加入群聊【2024年第十四届MathorCup数学建模】:http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kNol416eFZyg4AFPHCZsYfGkLnEnZ8H36&authKeyo9lIFgRfnk2U%2FfYYg1AlFJd5I456CSA2M6nlvJX2qcUockIKuMHj%2BhKMP6RnPeo1&noverify0&a…

在Ubuntu上搭建Prometheus + Grafana监控系统

1.Prometheus 部署 从官网下载页面找到最新的二进制文件下载 cd ~ curl -LO https://github.com/prometheus/prometheus/releases/download/v2.51.1/prometheus-2.51.1.linux-amd64.tar.gz将文件解压到指定目录 tar xf prometheus-2.51.1.linux-amd64.tar.gz -C /usr/local为…

每天学点儿Python(5) -- 序列索引和切片

Python中,序列是指一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。它类似于C/C中的数组或字符串,但又比数组或字符串强大很多 序列类型包括字符串、…

挖掘未来:私有LTE/5G网络驱动智慧矿山的自动化

私有LTE/5G网络为世界上一些最偏远的角落提供无线连接。如果没有无线通信网络,各行业就无法满足增加产量、降低运营成本和减少环境破坏的需求。 在本案例研究中,我们着眼于自动化如何改变无线网络的动态。智慧矿山要求运营商无缝集成多个系统和应用程序…

Keil #include “stm32f10x.h“报错

给我的提示 我看到懵逼了,我就一直在网上找各种方法,发现都不行,我就想没有找到,我挨个挨个去找它想要的,发现是有的 我就想这不是有吗,怎么会找不到呢 我就又想是我路径写错了?我就看了一下路…

【深度学习】Fine-Grained Face Swapping via Regional GAN Inversion高保真换脸范式

文章目录 代码介绍实践效果 帮助、问询 代码 https://github.com/e4s2022/e4s 介绍 Fine-Grained Face Swapping via Regional GAN Inversion 提出一种新的高保真换脸范式,能够保留期望的微妙几何和纹理细节。从微观面部编辑的角度重新思考换脸任务,基…

npm创建Vue3项目

npm创建Vue3项目 1 创建Vue项目说明 2 安装3 运行 1 创建Vue项目 创建最新版的Vue项目,已经不推荐使用CLI构建方式了。参考如下即可。 npm create vuelatest如果发现一直动不了,切换网络试一下,个人热点尝试一下。 按下图的选项按需引入自…

[STM32+HAL]DengFOC移植之闭环位置控制

一、源码来源 DengFOC官方文档 二、HAL库配置 1、开启硬件IIC低速模式 低速更稳定 2、PWM波开启 三、keil填写代码 1、AS5600读取编码器数值 #include "AS5600.h" #include "math.h"float angle_prev0; int full_rotations0; // full rotation trac…

OSCP靶场--Hawat

OSCP靶场–Hawat 考点(目录扫描zip文件下载java代码审计web1的sql注入写到web2的webshel) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.158.147 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-11 07:18 EDT …

性能优化-01

当看到性能指标时,你会首先想到什么呢?我相信 “高并发” 和 “响应快” 一定是最先出现在你脑海里的两个词,而它们也正对应着性能优化的两个核心指标—— “吞吐” 和 “延时” 。这两个指标是从应用负载的视角来考察性能,直接影…

python爬虫----BeautifulSoup(第二十天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…
最新文章