判断一颗树是不是另一棵树的子树

判断一棵树是否为另一棵树的子树 阅读详情

s为大树,t为小树
给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。
题目网址:https://leetcode-cn.com/problems/subtree-of-another-tree/
思路:

  1. 两个树都是空树,返回true
  2. 如果两个树一个是空,一个不是空,不包含
  3. 两个树都是非空
    a)比较根节点的值是不是相等,如果相等的话,比较一下s和t是不是相同的树
    b)递归的判定一下,t是否被s的左子树包含
    c)递归的判定一下,t是否被s的右子树包含。

具体代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    //判断是否相等的方法
    public boolean isSametree(TreeNode s, TreeNode t){
        if(s == null && t == null){
            return true;
        }
        if(s == null || t == null){
            return false;
        }
        if(s.val != t.val){
            return false;
        }
        return isSametree(s.left,t.left) && isSametree(s.right,t.right);
    }
    public boolean isSubtree(TreeNode s, TreeNode t) {
        if(s == null && t == null){
            return true;
        }
        if(s == null || t == null){
            return false;
        }
        boolean ret = false;
        if(s.val == t.val){
            ret = isSametree(s,t);
        }
        if(!ret){
            ret = isSubtree(s.left,t);
        }
        if(!ret){
            ret = isSubtree(s.right,t);
        }
        return ret;
    }
}

这一题的重要思路是,用isSametree来大事化小

首先递归遍历大的s树,看能不能找到节点和t根节点相同的点,如果找到了,用isSametree来保存,返回true即可。
如果没有找到就继续递归遍历,先左子树,再右子树

判断两颗二叉树是否相同,判断一棵树是不是另一棵树的子树,求二叉树的高度,判断二叉树是不是平衡二叉树,判定一个二叉树是否是对称,判断一个树是不是完全二叉树,二叉树的层序遍历并将值分层存储的代码以及思路。 一.检查两颗树是否相同。 OJ链接 1.问题描述: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 2.思路分析: 我们看到oj题中函数的参数是两个根节点,首先这两个根节点如果都为空那么这两颗二叉树也是相同的直接return true即可,其次如果这两颗树中有一个根节点不为空那么这两棵树一定不相同直接return false即可,最后我们需要判断这两个节点的值是否相同,如果相同则需要判断这两棵树的左子. 阅读详情

相关推荐

判断一颗二叉树是是否是另一颗树的子树

例如treeB是treeA的子树,那么如何判断B是A的子树呢? 要做这道题,可以将过程分为两步: 第一步,找到两棵树根节点有相同的值,只有根节点的值相同才有往下判断的必要; 第二步,找到相同根节点之后,再判断根节点的子树是否包含B树一样的结构。 注意:空树不是任何树的子树 详细分析第一步:首先要找与B树根节点值相同的结点,那么就从A树的根节点2开始遍历,如果A树根结点的值与B树相同,

zhangyi_ZY的博客 847

如何判断一棵树是不是另一棵树的子树

情况一:两棵树均是有序的,即树的左右子树的顺序是固定的 分析:假设这两棵树中的第一棵为母树,另一棵为子树。首先在母树中搜索子树的根节点,找到根节点之后就按照该根节点向下搜索比较,如果比较结果为true即子树是母树的一棵子树,否则的话继续向下搜索子树根节点在母树中的位置,如此递归下去最终即可得到结果。 package suanfaTest; class TreeNode{ int v...

Marmara 1970

单相全桥逆变三种SPWM调制方式(单极/双极/倍频)到底怎么选?一篇讲透优缺点与选型

本文深入解析单相全桥逆变器中单极性、双极性和单极性倍频三种SPWM调制方式的原理与工程选型策略。通过对比开关损耗、谐波特性和驱动复杂度等关键指标,提供基于STM32的实战方案和选型框架,帮助工程师在新能源发电、电机驱动等应用中做出最优决策。

weixin_34046298的博客 803

判断一个树是不是另一个树的子树

最主要的思想就是递归!!! 一般对于树的解决问题都是递归 我们这里就写成A树和B树 那么题意也就变成了 B树是A树的子树 子树也就是 B树是A树中的一部分 那么首先就要判断这两部分是不是相等 递归 首先比较根节点,如果根节点相等并且根节点的所有字节点都相等,那么我们就接着向下递归 这里需要仔细考虑一种情况 子树 那么只要是一部分就行 不用非得是下面完全相同 例...

Cscprx的博客 611

无人机机场自动化巡检钢铁厂管廊技术方案

摘要:针对钢厂管廊人工巡检效率低、成本高等问题,提出5G+无人机自主巡检解决方案。该系统由智能机库、5G无人机、AI分析平台等组成,可实现自动起降、实时数据传输、缺陷智能识别等功能。无人机配备四合一云台相机,支持42分钟续航和复杂环境飞行,通过深度学习算法自动生成巡检报告。方案实施后可提升巡检效率3倍以上,降低人工成本和安全风险,实现全天候自动化巡检,为钢厂管廊安全管理提供智能化技术支持。(149字)

gxdhlg的专栏 1685

Win10 + Linux 双系统删除(Linux)

删除Linux所使用的磁盘分区 进入此电脑->计算机->管理->磁盘管理

weixin_52247624的博客 943

【刷算法】一棵树是否是另一棵树的子结构

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 分析 假设树A的根节点ra和树B的根节点rb值相同,那么接下来就以这两个节点开始依次比较ra.left和rb.left、ra.right和rb.right,过程中只要有一个不相同则返回;继续比较ra.left和rb是否相同、ra.right和rb是否相同,就这样依次进行下去,时间复杂度则为O(树A...

weixin_33938733的博客 194

单窗算法的地表温度反演:谷歌地球引擎GEE代码

该论文基于Statistical Mono-Window(SMW)算法,对地表温度加以求解。其中,简单地说,SMW算法即是通过简单的线性关系,对由单热红外波段所得的大气表观亮温与地表温度之间的经验关系加以表示,从而计算得到LST。

2301_78834737的博客 553

【初阶数据结构与算法】二叉树链式结构刷题训练(Leetcode二叉树遍历、单值二叉树、相同的树、另一棵树的子树、对称二叉树)

这里左边的p节点的左子树3和右边q节点的右子树3进行递归,它们都在外面,所以返回的结果用一个新的变量outside存起来,p节点的右子树4和q节点的右子树4进行递归,它们都在里面,所以返回的结果用新变量inside存起来。这道题是要求我们查看左边的二叉树里面的子树有没有和右边子树相同的,这道题相对于比前面的相同的树要稍微要难一点点,因为我们发现它们都是求树和树是否相同的问题,只是到这道题是查看左边的子树和右边的树是否相同,情况更为复杂。那么我们最后到底该怎么做呢?

hdxbufcbjuhg的博客 4005

Security Onion的部署(超详细)

本文介绍了开源入侵检测系统securityonion的部署

qq_72583325的博客 6068

2026年信创系统技术应用专业人才培养基地建设方案(高职、信创新专业、人才培养、专业代码:510221)

响应国家信创产业战略及教育部新增“信创系统技术应用”专业(代码510221)的部署,联合麒麟软件、华为鸿蒙等领军企业,建设高水平信创人才培养基地。方案基于国家政策导向(如2027年央企全面国产化替代目标)和行业人才缺口(2025年缺口超80万人),提出以“产教融合、创新驱动”为核心,构建集教学、实训、认证于一体的综合性培养体系。 建设内容涵盖五大方向: 专业规划:分三阶段(2025-2030年)推进专业申报、课程开发与区域辐射,最终建成区域性信创技术创新平台。 课程体系:围绕运维、云计算、数据库、适配

啊碧根果的博客 1597

判断一棵树为另一颗树的子树

题目:     有两颗二叉树,判断其中一颗A是否是另一颗B的子树。 解决思想:     按先序遍历树B的每个结点,判断结点是否和树A的根结点相同。若相同,再判断以该结点为根结点的树是否有和树A相同的子树。 代码: #include using namespace std; struct BTree { int m_val; BTree *m_lchild; BT

ZX714311728的博客 1816

2026年职业院校技能大赛中职移动应用与开发—数字生活APP原型设计参考答案(含素材)

本模块以产品原型为目标,考查参赛选手熟练收集、分析和归纳客户需求,清晰梳理业务流程,熟练使用UI设计软件进行产品UI/UE设计,掌握正确的UI配色方案,设计出符合业务逻辑的人体工学移动App 原型优秀作品。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 568

【LeetCode刷题指南】--对称二叉树,另一颗树的子树

本文分享了LeetCode上两道二叉树相关题目的解题思路:对称二叉树(101题)和另一棵树的子树(572题)。对于对称二叉树,通过递归比较左右子树是否镜像对称;对于子树问题,则递归判断当前树或其子树是否与目标树相同。两题均采用递归解法,时间复杂度O(n),空间复杂度O(n)。文章提供了详细代码实现和解题过程图示,适合准备面试或提升算法能力的读者参考学习。作者鼓励读者补充指正,并预告后续将继续更新LeetCode刷题系列。

会当凌绝顶,一览众山小 947

beegfs源码分析

BeeGFS的客户端是由一个内核模块和两个系统服务组成的,这里咱们主要分析内核模块。由于BeeGFS的目录树解析,是在父目录DEntry里找子目录或文件DEntry,逐级迭代完成的,所以在Mount文件系统时,须要从管理节点获取根元数据节点的ID,而后再向根元数据节点查询根目录的DEntry的信息,为后续的目录解析打下基础。获取类似/data/beeond/data/dentries/38/51/root/#fSiDs#/文件fileId的父路径。1.1 FileID的生成。Session网络消息。

wfzy的博客 1913

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一棵树是否为另一棵树的子树

问题描述:给定两个二叉树的根节点,判断第二树是否是第一个树的子树,如果是返回1,否则返回0. 分析:这个是百度的一道笔试题目,属于经典的数据结构问题,子树判断问题,针对这个问题可以采用递归的方法判断,          拿第二个树的每个节点去和第一个树做匹配,如果某个节点匹配成功,就接着往下匹配,否则重新从第二个树的的根节点开始。 测试用例: 树1

Smile&搁浅 1143

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【数据结构与算法 经典例题】判断一棵树是否是另一棵树的子树

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

倔强的石头的博客 784

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【数据结构】对称二叉树 && 另一颗树的子树(六)

【数据结构】对称二叉树 && 另一颗树的子树(六)   一,对称二叉树    题目详情:    解题思路:    思路实现:    源代码:   二,另一颗树的子树    题目详情:    解题思路:    思路实现:    源代码:

m0_71676870的博客 847

LeetCode572 另一颗树的子树

LeetCode572 另一颗树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/subtree-of-another-tree 著作权归领扣网络所有。商业转...

五更依旧朝花落的博客 303

相同的树//一棵树是否是另一颗树的子树

相同的树//一棵树是否是另一颗树的子树

翟黎明的博客 146

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万+

判断一颗树是不是另一棵树的子结构

问题 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路及实现 首先要明确的一点是,子结构不是子树,子树是一个更强的条件,而子结构只是指树结构中有这一子部分,如下图,B不是A的子树,但却是A的子结构。 1 2 / \ \ 2 3 5 / \ \ ...

Runner1st的博客 825

另一颗树的子树(数据结构基础回顾)

给定两个非空二叉树 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 / \ 1...

ambiguous__的博客 4076
上一篇: 给定两个二叉树,判断它们是否相同
下一篇: 求二叉树的最大深度
周末的丢
博客等级 码龄7年 197粉丝 331原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值