【树-简单】572. 另一棵树的子树

【科学刷题】树的子结构与子树判断 文章目录1. 判断【树B】是否是【树A】的【子结构】/【子树】1.1 概念阐述1.2 完全匹配的情况1.3 部分匹配的情况2. 查找所有重复子树 1. 判断【树B】是否是【树A】的【子结构】/【子树】 1.1 概念阐述 首先阐述一个概念:子结构匹配与子树匹配 匹配: 完全匹配就是A的子结构与B完全匹配 部分匹配: 部分匹配就是A的子结构与B部分匹配,A的子结构允许有与B不匹配的其他结构 如何判断是【完全匹配】还是【部分匹配】呢?我们需要仔细读题: 1.2 完全匹配的情况 1.3 部分匹配的情况 2. 查 阅读详情

【题目】
给你两棵二叉树 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 树上的节点数量范围是 [1, 2000]
subRoot 树上的节点数量范围是 [1, 1000]
-104 <= root.val <= 104
-104 <= subRoot.val <= 104
【代码】
【方法1】深度优先搜索暴力匹配
在这里插入图片描述

class Solution(object):
    def isSubtree(self, root, subRoot):
        def dfs(subRoot, root):
            if not subRoot and not root:
                return True
            if not subRoot or not root:
                return False
            if subRoot.val != root.val:
                return False
            return dfs(subRoot.left, root.left) and dfs(subRoot.right, root.right)


        if not root:
            return False
        return dfs(subRoot, root) or self.isSubtree(root.left, subRoot) or self.isSubtree(root.right, subRoot)

【方法2】深度优先搜索序列上做串匹配
在这里插入图片描述

class Solution:
    def visit(self,root,father,pos):
        if not root:
            if father==-1:
                self.sRoot[pos]+="lnull "
            elif father==1:
                self.sRoot[pos]+="rnull "
            return
        self.sRoot[pos]+=str(root.val)+" "
        self.visit(root.left,-1,pos)
        self.visit(root.right,1,pos)

    def isSubtree(self, root: TreeNode, subRoot: TreeNode) -> bool:
        self.sRoot=["",""]
        self.visit(root,0,0)
        self.visit(subRoot,0,1)
        if self.sRoot[1] in self.sRoot[0]:
            rs=self.sRoot[0].split(self.sRoot[1])
            return self.sRoot[1]==self.sRoot[0] or rs[0].endswith(" ")
        return False
Amesim管路仿真进阶:如何用阻力管实现不规则管路的高精度模拟 本文深入探讨了在Amesim仿真中,如何利用阻力管(Orifice with Table)元件,特别是TFORT0子模型,实现对不规则管路的高精度模拟。通过直接输入基于测试或CFD的流量-压降数据,该方法能有效弥补标准管路模型在复杂流道、内部结构复杂等场景下的不足,为液压、热管理等系统仿真提供精准可靠的部件模型。 阅读详情

相关推荐

ESP32-CAM搭建Arduino及简单使用

配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹

Ying的博客 2万+

二叉树--2-树的子结构--子树匹配

题目    输入两颗二叉树A,B,判断B是不是A的子结构。(PS:我们约定空树不是任意一个树的子结构)。思路    要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:            第一步在树A中找到和B的根结点的值一样的结点R,            第二步再判断树A中以R为根节点的子树是不是包含和树B一样的结构。    使用递归的方法即可。注意    这道题目不能利用先序遍历...

ax_hacker的博客 1709

CST高阶技巧:用周期性边界快速仿真共面波导色散特性(含JDM求解器优化)

本文详细介绍了在CST仿真软件中,利用周期性边界条件结合JDM本征模求解器,高效分析共面波导色散特性的高阶技巧。该方法通过仿真一个单元胞而非整条传输线,大幅提升计算效率,并提供了从建模、边界设置、求解器优化到后处理的完整工作流程,是高频电路设计的实用指南。

weixin_29280219的博客 402

每天一个算法之子树匹配

package ff; import java.util.Scanner; class BinaryTree{ int data; BinaryTree left; BinaryTree right; } public class isSubTree { static Scanner sc=new Scanner(System.in); public static

u012749168的博客 1463

Simulink实战:5步搞定固定翼飞行器六自由度动力学建模(附模型下载)

本文提供了一份详细的Simulink实战指南,通过5个核心步骤手把手教你构建固定翼飞行器的六自由度动力学模型。内容涵盖从顶层架构设计、核心方程手动实现,到模型集成、测试调试及进阶优化的完整流程,旨在帮助航空航天学生和工程师将抽象理论转化为可运行的仿真模型,并附有模型下载。

perl8的博客 634

实战避坑:在STM32上移植AUTOSAR BSW时,MCAL、ECU抽象层和服务层配置有哪些常见‘雷区’?

本文深入解析在STM32上移植AUTOSAR BSW时MCAL、ECU抽象层和服务层配置的常见陷阱,包括时钟树配置差异、GPIO电气特性问题、定时器资源冲突等实战经验。特别针对AUTOSAR架构在资源受限MCU上的特殊挑战,提供具体解决方案和优化策略,帮助开发者规避移植过程中的典型错误。

weixin_30258901的博客 561

树形地铁系统

题目 题目 思路 前两种是https://www.acwing.com/solution/content/4142/中读到的。 1 我们肯定是想要把两棵树的最小表示找出来,然后看看是否相同。 在这种情况下,我们期望是每个点在其子树内按最长链长度从大到小选择子节点进行DFS,但是如果相同呢?我们就要在链上干同样的事情,理论上我认为记忆性搜索应该可以到O(n2)O(n^2)O(n2),但我更认为我打不出这个代码。 2 上一种方法的优化,就是直接把子节点的最小表示求出来,然后子节点的最小表示再按字典序拼起来,然后

蒟蒻QMQ 200

嵌入式设备低功耗设计误区:为什么你的RK3568总是被‘意外’唤醒?

本文深入分析RK3568嵌入式设备低功耗设计中的常见误区,重点探讨唤醒源管理不当导致的意外唤醒问题。通过解析硬件设计陷阱、软件配置错误及系统化审计方法,帮助开发者有效排查和解决GPIO配置、唤醒源设置等关键因素引起的功耗异常,提升设备续航能力。

php55的博客 460

树同构简单Hash法

DESCRIPTION: 给出两棵节点数相同的树,求其是否同构,还要输出可行解(节点的匹配关系)带spj。 input 16(n个节点) 12 4 4 13 13 5 13 14 4 8 8 3 8 6 3 15 12 10 15 1 4 9 4 2 2 7 12 16 1 11 7 6 6 2 2 10 2 11 6 9 9 14 9 8

雾腾腾 824

保姆级教程:从Navicat 11/12到15,平滑升级搞定MySQL 8.0的caching_sha2_password认证

本文提供从Navicat 11/12升级到15的保姆级教程,重点解决MySQL 8.0的caching_sha2_password认证问题。详细介绍了备份配置、新版本功能亮点、跨平台安装步骤、配置迁移流程以及高级使用技巧,帮助用户平滑过渡到Navicat 15,提升数据库管理效率。

weixin_33724046的博客 203

LeRobot 官方论文:一个用于端到端机器人学习的开源库

本文介绍了一个名为LeRobot的开源库,旨在解决机器人学习领域的碎片化问题。该库提供了端到端的技术栈,包括统一的机器人中间件API、标准化的数据集格式(LeRobotDataset)、优化的推理栈以及多种最先进机器人学习算法的实现。LeRobot支持多种低成本开源机器人平台(如SO-10X、ALOHA-2等),通过共享中间件实现便捷的遥操作和数据收集。其数据集格式已广泛应用于社区,截至2025年9月已有16,000多个数据集公开共享。该库还支持流式处理大规模数据,降低了研究门槛。在模型方面,LeRobot

2506_90492529的博客 905

LeetCode 572. 另一棵树的子树【树+嵌套DFS;DFS序+KMP;树哈希】简单【C++,Java,GO】

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。。

memcpy0的博客 645

数据结构课程设计C/C++版--美团餐馆预定信息的管理与分析7 8

本关任务:编写一个能查询预定的程序。输入餐馆名称,查询用户账号为当前登录用户且餐馆名称为当前输入餐馆名称的结点信息,并输出其预定时间。本关任务:编写一个能查看预定的程序。创建链队列,从文件order.txt中读取数据,依次进入链队列中。遍历链队列,筛选出用户账号为当前登录用户的结点信息,并依次输出相应的餐馆名称和预定时间。烤肉刘老北京炙子烤肉(四道口店) 11月20日晚餐 0。外婆家(清河华润五彩城店) 12月12日午餐 0。甜鸭梨烤鸭店(农大店) 12月5日晚餐 0。鼎坤朋湘菜馆 12月8日晚餐 0。

m0_62222486的博客 1344

572. 另一棵树的子树————简单

目录题目解题思路Code运行结果 题目 572. 另一棵树的子树 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。 示例 1: 输入:root = [3,4,5,1,2], subRoot = [4,1,2] 输出:true 示例 2: 输入:root = [

Kinght_123的博客 526

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C/C++描述 LeetCode 572. 另一个树的子树

C/C++描述 LeetCode 572. 另一个树的子树 难度 简单 给定两个非空二叉树 **s** 和 **t**,检验 **s** 中是否包含和 **t** 具有相同结构和节点值的子树。**s** 的一个子树包括 **s** 的一个节点和这个节点的所有子孙。**s** 也可以看做它自身的一棵子树。

一起加油 5386

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode: 572. 另一棵树的子树

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

WZHao000的博客 2022

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

递归 力扣 572 另一个树的子树

力扣 572 另一个树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t: 4 / \ 1 2 返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。 示例 2: 给定的树 s: 3 / \ 4 5

Gettler的博客 679

Java实现 LeetCode 572 另一个树的子树(遍历树)

572. 另一个树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t: 4 / \ 1 2 返回 true,因为 t 与 s 的...

南 墙 1万+

LeetCode——572—— 另一棵树的子树

- 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。给你两棵二叉树 root 和 subRoot。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true;否则,返回 false。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。

小李很执着的博客 846

【Leetcode】965. 单值二叉树、100. 相同的树、572. 另一棵树的子树

【Leetcode】965. 单值二叉树、100. 相同的树、572. 另一棵树的子树的题解

一个喜欢猫咪的程序员 843

LC 572.另一棵树的子树

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

花木凋零成兰的博客 1084

LeetCode 572. 另一棵树的子树

过一半用例: 用层序遍历得到大树的每个节点,然后再用这每个节点为根的树与小树比较是否是结构相同且值相同的树。 //这种解法 是包含这个部分,但是不是子树 class Solution { public boolean isSubtree(TreeNode root, TreeNode subRoot) { if(subRoot == null) return true; if(root == null) return false; //先层序遍历得到树

程序猿进化梯 522

Leetcode572.另一个树的子树

Leetcode572.另一个树的子树 题目: 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1: 给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t: 4 / \ 1 2 返回 true,因为 t 与 s 的一个子树拥有相同的结构和节点值。 示例 2: 给定的树 s: 3 /

会流泪de鱼的博客 197

LeetCode572 另一棵树的子树

Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node...

fruit513的博客 3087

LeetCode —— 572. 另一棵树的子树

力扣 —— 572. 另一棵树的子树

微笑,来自内心坚不可摧的自信。 721

【leetcode】572.另一棵树的子树

【leetcode】572.另一棵树的子树题目思路代码 题目 leetcode原题链接 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。 示例 1: 输入:root = [3,4,5,1,2], subRoot = [4,1,2] 输出:true 示

laplacepoisson的博客 429
上一篇: 【Java-II】网络编程实战讲解 P7-12(Day19-20210718-Day2)
下一篇: 【树-简单】面试题 04.04. 检查平衡性
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值