【LeetCode每日一题】——572.另一棵树的子树

news2024/11/25 7:09:18

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 七【题目提示】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

二【题目难度】

  • 简单

三【题目编号】

  • 572.另一棵树的子树

四【题目描述】

  • 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。
  • 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

五【题目示例】

  • 示例 1:

    • 在这里插入图片描述
    • 输入:root = [3,4,5,1,2], subRoot = [4,1,2]
    • 输出:true
  • 示例 2:

    • 在这里插入图片描述
    • 输入:root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]
    • 输出:false

六【解题思路】

  • 利用深度优先搜索
  • 从root(主树)的根节点开始判断,subRoot(子树)是否是主树的子树
  • 通过遍历整个root(主树)找新的根节点,来判断是否存在subRoot(子树)
  • 是否是subRoot(子树)的判断比较简单,先看对应位置是否存在节点,再看节点值是否相同,具体可见代码
  • 最后返回结果即可

七【题目提示】

  • r o o t 树 上 的 节 点 数 量 范 围 是 [ 1 , 2000 ] root 树上的节点数量范围是 [1, 2000] root[1,2000]
  • s u b R o o t 树 上 的 节 点 数 量 范 围 是 [ 1 , 1000 ] subRoot 树上的节点数量范围是 [1, 1000] subRoot[1,1000]
  • − 1 0 4 < = r o o t . v a l < = 1 0 4 -10^4 <= root.val <= 10^4 104<=root.val<=104
  • − 1 0 4 < = s u b R o o t . v a l < = 1 0 4 -10^4 <= subRoot.val <= 10^4 104<=subRoot.val<=104

八【时间频度】

  • 时间复杂度: O ( m × n ) O(m×n) O(m×n),其中 m 、 n m、n mn分别为两个树的节点个数
  • 空间复杂度: O ( m a x { d m , d n } ) O(max\{d_m,d_n\}) O(max{dm,dn}),其中 d m 、 d n d_m、d_n dmdn分别为两个树的高度,也就是递归栈的深度

九【代码实现】

  1. Java语言版
public boolean isSubtree(TreeNode root, TreeNode subRoot) {
    if(judge(root,subRoot) || subRoot == null){
        return true;
    }
    if(root == null){
        return false;
    }
    return isSubtree(root.left,subRoot) || isSubtree(root.right,subRoot);
}

public boolean judge(TreeNode p,TreeNode q){
    if(p == null && q == null){
        return true;
    }else if(p == null || q == null){
        return false;
    }else if(p.val != q.val){
        return false;
    }
    return judge(p.left,q.left) && judge(p.right,q.right);
}
  1. C语言版
bool judge(struct TreeNode* p,struct TreeNode* q)
{
    if(p == NULL && q == NULL)
    {
        return true;
    }
    else if(p == NULL || q == NULL)
    {
        return false;
    }
    else if(p->val != q->val)
    {
        return false;
    }
    return judge(p->left,q->left) && judge(p->right,q->right);
}

bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot)
{
    if(judge(root,subRoot) || subRoot == NULL)
    {
        return true;
    }
    if(root == NULL)
    {
        return false;
    }
    return isSubtree(root->left,subRoot) || isSubtree(root->right,subRoot);
}

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

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

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

相关文章

MySQL索引优化(二)

文章目录一、查询优化1. 索引失效&#xff08;1&#xff09;不满足最左前缀法则&#xff0c;索引失效&#xff08;2&#xff09;在索引列上做任何计算、函数操作&#xff0c;索引失效&#xff08;3&#xff09;存储引擎使用索引中范围条件右边的列&#xff0c;索引失效&#xf…

倪健中会长应邀出席首届世界数贸易博览会致辞:把杭州打造成全球数字贸易元宇宙之都

12月11日至14日&#xff0c;首届全球数字贸易博览会在浙江省杭州市盛大举办。博览会由浙江省人民政府和商务部联合主办&#xff0c;杭州市人民政府、浙江省商务厅和商务部贸发局共同承办&#xff0c;主题为“数字贸易商通全球”&#xff0c;爱尔兰为主宾国&#xff0c;北京、上…

大航海时代:葡萄牙、西班牙率先出发,英国为何成为最大赢家?

欧洲经历了长达千年的中世纪以后&#xff0c;忽然开始自我反省了。为啥&#xff1f;因为打了上千年&#xff0c;不仅社会没进步&#xff0c;反而因为各种瘟疫、战争&#xff0c;把人口搞掉了一大半。 这么玩下去&#xff0c;日耳曼人的各大分支&#xff0c;可能都要完犊子了&a…

基于java+springboot+mybatis+vue+mysql的智能热度分析和自媒体推送平台

项目介绍 前端页面&#xff1a; 功能&#xff1a;首页、文章信息、图片信息、视频信息、个人中心、后台管理 管理员后台管理页面&#xff1a; 功能&#xff1a;首页、个人中心、用户管理、文章类型管理、文章信息管理、图片类型管理、图片信息管理、视频类型管理、视频信息管…

数据工厂刷新PowerBI数据集2

前面已经介绍过数据工厂中刷新PowerBI数据集&#xff0c;我们先发起一个web请示获取了token&#xff0c;然后再把token传入到接口中从而刷新数据集。 但是&#xff0c;明明都是微软家的产品&#xff0c;竟然还需要先获取token?明明Power Apps、Power Automate里都不需要的啊&…

茶文化推广网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网型站前台&#xff1a;网站个介绍、帮助信总、茶文化、茶叶分享、讨论信总 管理功能&#xff1a; 1、管理网站介绍、帮…

刚做外贸,先做平台好还是独立站好?

作为亚马逊这样的平台卖家&#xff0c;依托平台完善的第三方服务和流量红利&#xff0c;很容易将产品卖到海外。如今&#xff0c;随着平台要求越来越严格&#xff0c;管理政策越来越多变&#xff0c;用户需求也越来越多样化和苛刻&#xff0c;卖家在平台上经营店铺的一些问题正…

[附源码]Python计算机毕业设计SSM基于Web的摄影爱好者交流社区(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Clone使用

实现克隆接口:clone方法是默认是Object的方法 1)这个接口是一个标记性的接口(空接口)&#xff0c;他们内部都没有方法和属性&#xff0c;实现这个接口表示这个对象都可以进行克隆&#xff0c;我们调用Object对象的Object.clone()方法&#xff0c;如果没有实现Cloneable的类对象…

【云原生】k8s声明式资源管理

内容预知 1.资源配置清单的管理 1.1 查看资源配置清单 1.2 修改资源配置清单并应用 离线修改 在线修改 1.3 删除资源配置清单 2.自主编写资源清单 2.1 初步认识资源清单中svc的重要配置项 2.2 手动编写 svc资源配置 3.手动生成模板&#xff0c;再编写资源清单 &#x…

解决虚拟机IP地址无法获取和网络无法连接

首先看一下电脑的end33分配成功没有 ifconfig或者使用ip addr查询都可以 ip addr 目录 1.首先看看你的网络连接模式是不是NAT 2.去主机电脑服务查看这四个服务是否开启 3.查看虚拟机子网ip是否分配了 4.修改我们的网卡配置文件&#xff0c;使用下面命令进入文件 5.重启网…

jemeter 压测并生成报告

文章目录前言一、压测步骤1.1 创建jvm文件1.2 压测生成测试文件及html压测结果二、结果分析前言 jmeter&#xff1a;是Apche公司使用Java平台开发的一款测试工具。 一、压测步骤 1.1 创建jvm文件 添加测试计划 &#xff08;当打开jmeter默认有一个测试计划&#xff09;添加…

高并发下解决AtomicLong性能瓶颈的方案——LongAdder

一、 LongAdder简介 LongAdder类是JDK1.8新增的一个原子性操作类。上一节说到&#xff0c;AtomicLong通过CAS提供了非阻塞的原子性操作&#xff0c;相比用阻塞算法的synchronized来说性能已经得到了很大提升。在高并发下大量线程会同时竞争更新同一个原子变量&#xff0c;但由…

Qt 模型视图编程之重置模型数据

背景 Qt 模型视图编程中模型定义了标准接口对数据进行访问&#xff0c;可根据需求继承对应的抽象模型类来实现自定义的数据模型。一个基本的数据模型至少要实现以下虚函数&#xff1a; ①&#xff0e;rowCount&#xff1a;行数&#xff0c;返回要显示多少行&#xff1b; ②&…

软件工程---习题六

4. 图6.18给出的程序流程图代表一个非结构化的程序&#xff0c;问:   &#xff08;1&#xff09;为什么说它是非结构化的&#xff1f;   答&#xff1a;通常所说的结构化程序&#xff0c;是按照狭义的结构程序的定义衡量&#xff0c;符合定义规定的程序&#xff0c;每个代码…

【操作系统】模式切换篇

CPU的模式 什么是CPU的模式&#xff1f;这和CPU的发展过程有关&#xff0c;最开始CPU是8位的&#xff0c;后来发展到16位&#xff0c;然后是32位&#xff0c;现在是64位&#xff0c;多少多少位指的是寄存器的位宽。CPU能使用的寄存器宽度以及CPU使用的指令等就构成了CPU的模式…

传统ERP管理项目有哪些问题?项目ERP系统哪个好?

8Manage FAS 是专为基于项目的公司设计的企业资源规划系统&#xff08;ERP系统&#xff09;。基于项目的公司包括建筑、工程和施工操作 (AEC)、产品要订购制造 (ETO) 和各种其他类型的专业服务公司 (PSO)。 对任何公司来说&#xff0c;无论在什么行业&#xff0c;项目对其业务…

Linux 调试之 TRACE_EVENT

文章目录前言一、TRACE_EVENT简介二、TRACE_EVENT() 结构2.1 TRACE_EVENT简介2.2 trace_sched_switch示例三、The header file参考资料前言 在Linux的整个历史中&#xff0c;人们一直希望在内核中添加静态跟踪点&#xff0c;即记录内核中特定位置的数据以供以后检索的函数。与…

[附源码]Nodejs计算机毕业设计基于大数据的超市进销存预警系统Express(程序+LW)

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

开源大数据比对平台(dataCompare)新版本发布

开源大数据比对平台设计与实践—dataCompare 前文介绍了开源大数据比对平台设计和实践&#xff0c;最近将整体业务流程进行了完善和开发。 一、目前当前版本实现了如下功能&#xff1a; (1)低代码简单配置完成数据比对核心功能 (2)数据量级比对、数据一致性比对 二、系统功…