LeetCode每日一题_572.另一棵树的子树

news2024/9/30 21:19:46

在这里插入图片描述
解题思路:
Step1:首先我们要知道如何判断两颗树相同,思路就是遍历每个节点,然后判断是否均相等,需要用递归来实现。代码如下所示:

public static boolean equals(TreeNode t1,TreeNode t2){
		if(t1==null&&t2==null)
			return true;
		if(t1==null||t2==null)//在上面的if语句不成立的前提下,两棵树中仅存在一棵树是null,则这两棵树不相等
			return false;
		return t1.data==t2.data && equals(t1.left, t2.left) && equals(t1.right, t2.right);
	}

Step2:判断一棵树是否是另一棵树的子树这里就是判断一棵树是另一棵树的一部分,也就是说如果是子树,那么这棵小树肯定是这棵大树某一个节点的子节点以及子孙节点组成的一部分。可以用到前面判断相等的方法。假定我们有两棵树的根节点,分别为t1,t2,如果我们判断t1.left和t2是相等的,或者是t1.right和t2是相等的,那么可以判断t2就是t1的子树。注意使用return实现递归思想。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        return subTree(root, subRoot);
    }
    public static boolean equals(TreeNode t1,TreeNode t2){
		if(t1==null&&t2==null)
			return true;
		if(t1==null||t2==null)
			return false;
		return t1.val==t2.val && equals(t1.left, t2.left) && equals(t1.right, t2.right);
	}
	
	public static boolean subTree(TreeNode t1,TreeNode t2){
		if(t1==null)return false;
		if(equals(t1, t2))return true;
		return subTree(t1.left, t2) || subTree(t1.right, t2);
	}

}

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

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

相关文章

[Java]面向对象,从浅到深

快速入门 计算机的核心作用就是处理数据, 变量用来存储单个数据, 数组用来储存一批数据, 对象用来存储一类数据 什么是对象: 对象就是一种特殊的数据结构, 在java中万物皆对象 面相对象编程的好处: 更加符合人类思维习惯 类和实例对象 在java中必须先设计类, 才能根据类创…

git学习入门1——下载安装与添加用户标识设置name与Email

想法是这样的,先是自己工作闲暇之余在学习C语言,在跟一个某平台的机构学习C语言的基础知识,空闲之余学习了几天,想起了之前学习过程中某学员提出的git每日提交代码的那个表格记录,忽然想起自己也先学习git的使用。 先是…

三、初识工作流

基础操作 拖动操作,按住鼠标左键可以拖动 放大缩小,可以通过鼠标滚轮操作 节点含义 1、大模型 2、正向与负向提示词(生成图片的文字信息) 3、图片尺寸设定(批次大小为每次生产图片数量) 4、采样器 5、图片渲染 6、保存图像 设…

Reed-Solomon纠错码——RS(255,251)学习及实现

1、基础知识 1.1 有限域 有限域_百度百科​​​​​​ 伽罗华域(Galois Field)上的四则运算_模2的伽罗华域乘法-CSDN博客 1.2 RS(255,251) 里德-所罗门码(一种前向错误更正的信道编码)_百度百科 本原…

Spring面试篇章——IOC

IOC概念和原理 IOC概念 IOC就是控制反射,把对象创建和对象之间的调用过程,交给Spring进行管理使用IOC的目的:降低耦合度 IOC底层原理 xml解析、工厂模式、反射 图解: 原始模式 耦合度太高了,即当dao改了&#xf…

UWB实操:使用 litepoint 收发UWB信号

使用 litepoint 收发UWB信号 把信号线接到 litepoint 的RF1 和RF2。 注意: RF1 支持 VSG(TX) 和VSA(RX)RF2 只支持 VSG(TX)同一时间只能一个 VSG(TX) 双击 LED STATUS,改变RF1和RF2的模式。 RF1:VSA(RX) RF2:VSG(TX) Techno…

学习笔记--算法(双指针)3

快乐数 . - 力扣(LeetCode) 题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无…

8.怎么配嵌套子路由,以及它的作用

作用 配嵌套子路由,就是可以通过同一个页面,让不同的位置发生变化,其他的位置不会发生变化,而做到一个局部刷新 例子 红线框住的部分,头部和导航栏是不会发生变化的,变化的只有中间的内容 子路由的操作步骤 将这个页面的头部和导航栏部分的样式和风格,移到主路由上(<tem…

111页PPT某大型制造业ERP转型规划方案

德勤为大型制造业ERP转型规划方案提供了一系列的策略和步骤&#xff0c;这些策略和步骤旨在帮助企业实现数字化转型&#xff0c;提升业务效率和竞争力。 以下是德勤提出的关键点 &#xff1a;资料下载方式&#xff0c;请看每张图片右下角信息 1. 流程规划&#xff1a;德勤首先…

企业级业务架构设计:指南解析

引言 在数字化转型的浪潮中&#xff0c;企业业务架构的设计成为了连接企业战略与技术实现的桥梁&#xff0c;其重要性日益凸显。本文将深入探讨企业级业务架构的设计原则、流程、工具和技术实现&#xff0c;并结合具体案例&#xff0c;为读者提供详尽的实战指导。通过结合《企…

GAZEBO之MyRobot建立

GAZEBO之MyRobot建立 1. 源由2. 示例Step 1: 新建一个简单世界Step 2: 新建一个模型(model)Step 3: 机器人组成链接(Links)Step 3.1: 新增底盘(Links/Chassis)Step 3.1.1: 惯性属性(Inertial properties)Step 3.1.2: 视觉(Visual)Step 3.1.3: 碰撞(Collision) Step 3.2: 新增左…

PointNet和PointNet++论文解读

目录 一、导言 二、PointNet介绍 三、PointNet网络结构 1、损失函数 2、正则化 四、PointNet 1、分层次的点集抽象层 一、导言 PointNet来自CVPR2017&#xff0c;是最早直接处理点云数据用于计算机视觉的模型&#xff0c;并运用于分割、检测、场景理解任务&#xff0c;P…

celery简单使用

1. 框架介绍 Celery是一个强大的异步任务队列/作业队列框架, 它主要用于处理大量消息, 同时为操作提供稳定可靠的消息传输机制. Celery的分布式特性允许任务分散到多个计算节点上并行处理, 从而提高系统的可扩展性, 可靠性和性能. Celery使用消息代理(如: RabbitMQ, Redis)来实…

【Linux】win 环境下进行 linux开发

文章目录 IDE 安装Python开发创建一个新项目安装 Python、pip 和 venv创建虚拟环境&#xff08;建议&#xff09;运行Python 参考文章 想要win 环境下进行 linux开发&#xff0c;需要依赖于wsl。wsl安装可参考上篇文章 【Linux】wsl win安装Linux环境 这里主要介绍在 linux下…

【pkill pgrep】Centos/Linux pkill命令详细介绍

简介 系统版本&#xff1a;Centos7.6 pkill命令用于杀死一个进程&#xff0c;会根据进程名称和其他属性杀死进程&#xff08;默认会向进程发送SIGTERM信号&#xff0c;详细请看Linux信号的行为说明&#xff09;&#xff0c;与之相似的命令有killall&#xff0c;与kill命令相比&…

C++学习之路(1)— 第一个HelloWorld程序

C学习之路&#xff08;1&#xff09;— 第一个HelloWorld程序 一、前言 C在C语言的基础上添加了对面向对象编程和泛型编程的支持&#xff0c;在 20世纪90年代便是最重要的编程语言之一&#xff0c;并在21世纪仍保持强劲势头。C继承了C语言高效、简洁、快速和可移植性的传统。 …

鸿蒙HarmonyOS开发:常用布局及实用技巧

文章目录 一、概述二、盒子模型三、线性布局&#xff08;Column/Row&#xff09;1、space属性2、justifyContent属性3、alignItems属性 四、实用技巧1、Blank组件的使用2、layoutWeight属性的使用 一、概述 布局是指对页面组件进行排列和定位的过程&#xff0c;其目的是有效地…

【STM32】“stm32f10x.h” 头文件的作用

目录 1. 文件结构与头文件保护1.1 头文件保护1.2 包含的头文件 2. 宏定义和常量2.1 系统时钟相关2.2 外设时钟使能2.3 中断优先级 3. 外设寄存器结构体3.1 GPIO 寄存器结构体3.2 RCC 寄存器结构体3.3 USART 寄存器结构体 4. 外设头文件的引入4.1 GPIO 外设头文件4.2 RCC 外设头…

CMU15445 (Fall 2023) Project 3 - Query Execution 思路分享

文章目录 写在前面Task 0 - Read the Source Code算子(executor)如何获取数据&#xff0c;BusTub如何描述算子&#xff1f;ButTub如何存储表的数据&#xff0c;描述表的结构&#xff1f; Task 1 - Access Method ExecutorsSeqScanInsertUpdateDeleteIndexScanOptimizing SeqSca…

Tensorflow训练视觉模型(CPU)

目录 零、模型下载 一、清理C盘 二、 配置环境 三、运行项目前提操作 &#xff08;1&#xff09;根据自己的项目设置路径。每次激活虚拟环境&#xff08;tensorflow115&#xff09;都得重设一次 &#xff08;2&#xff09;执行setup 这个项目的路径移动了位置也需要重设一…