当前位置: 首页 > news >正文

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

题目:

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

思路:

 

代码:

class Solution {
    public  boolean isSameTree(TreeNode root,TreeNode subRoot){
        if(root==null&&subRoot!=null||root!=null&&subRoot==null){
            return false;
        }
        if(root==null&&subRoot==null){
            return true;
        }
        if(root.val!=subRoot.val){
            return false;
        }
        return isSameTree(root.left,subRoot.left)&&isSameTree(root.right,subRoot.right);
    }


    //时间复杂度:O(m*n)
    public boolean isSubtree(TreeNode root, TreeNode subRoot) {
        // if(root==subRoot==null){
        //     return true;
        // }提示中说了,节点数都不为0
        /*if(root.val==subRoot.val){
            return isSubtree(root.lelft,subRoot.left)&&isSubtree(root.right,subRoot.right);
        }*/
        //虽然提示中说了,节点数都不为0,但这个还是要写,因为这是递归的结束条件之一,而且可以防止空指针引用
        if(root==null){
            return false;
        }
        
        if(isSameTree(root,subRoot)){
            return true;
        }

        if(isSubtree(root.left,subRoot)){
            return true;
        }

         if(isSubtree(root.right,subRoot)){
            return true;
        }

        return false;
    }
}

 

运行结果:

相关文章:

  • 容器实战高手课笔记 ----来源《极客时间》
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第一模块·认知转型篇 —— 第二章 开发环境全景搭建:从gcc到JVM的范式迁移
  • 聊聊价值投资
  • 【Qt】Qt Creator开发基础:项目创建、界面解析与核心概念入门
  • Ubuntu24安装Docker详细教程
  • iPhone相册导出到电脑的完整指南
  • 程序化广告行业(85/89):多行业广告投放资质全解析
  • C# visionpro联合编程中遇到的问题之 R6025 - pure virtual function call
  • C语言编译预处理1
  • LR(0)
  • DAP-seq(DNA亲和纯化测序)
  • 数据库原理及应用mysql版陈业斌实验三
  • Kafka使用方式与底层原理解析
  • 详解如何复现DeepSeek R1:从零开始利用Python构建
  • Linux LED驱动(设备树)
  • AI云游戏盒子:未来娱乐的新纪元
  • 给网站添加文本水印
  • 记一次 .NET某固高运动卡测试 卡慢分析
  • 记录一次JVM调优过程2
  • Day31笔记-进程和线程
  • 中国海警局新闻发言人就菲律宾非法登临铁线礁发表谈话
  • VR数字沉浸体验又添新节目,泰坦尼克号驶进文旅元宇宙
  • 俄罗斯称已收复库尔斯克州
  • 苏炳添任暨南大学体育学院院长
  • 农贸美学、业态再构、智能管理,今天的菜市场不止有菜
  • 著名哲学家、中山大学哲学系原系主任李锦全逝世