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

力扣--LCR 143. 子结构判断

题目

给定两棵二叉树 tree1 和 tree2,判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。
注意,空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。

示例 1:
在这里插入图片描述在这里插入图片描述

代码

/**

  • 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 isSubStructure(TreeNode A, TreeNode B) {
    if(A == null || B == null){
    return false;
    }

     if(isSubTree(A, B)){
         return true;
     }
    
     if(isSubStructure(A.left, B) || isSubStructure(A.right, B)){
         return true;
     }
    
     return false;
    

    }

    public boolean isSubTree(TreeNode Ta, TreeNode Tb){
    if(Tb == null){
    return true;
    }

     if(Ta == null){
         return false;
     }
    
     if(Ta.val != Tb.val){
         return false;
     }
    
     return isSubTree(Ta.left, Tb.left) &&
            isSubTree(Ta.right, Tb.right);
    

    }
    }
    假设树A的节点个数为 n, 树B为k,则
    时间复杂度:isSubTree函数的时间复杂度为 O(k),所以时间复杂度为 O(n*k)。
    空间复杂度:空间复杂度为树 A 的高度。


http://www.kler.cn/a/419417.html

相关文章:

  • Docker容器ping不通外网问题排查及解决
  • 缓存方案分享
  • 两个生活中的例子反向理解正/反向代理?
  • ASP.NET Core 负载/压力测试
  • Verilog的线与类型与实例化模块
  • linux内核面试题精选及参考答案
  • 挑战用React封装100个组件【006】
  • 【Springboot】@Autowired和@Resource的区别
  • TouchGFX设计模式代码实例说明
  • 基于centos7.9容器编排Jumpserver堡垒机
  • Android获取内置卡、内置U盘和挂载U盘路径和内存大小
  • Lerna管理和发布同一源码仓库的多个js/ts包
  • React面试进阶(五)
  • docker rocketmq
  • vue2和vue3两种倒计时CountDown实现
  • 设计模式之单例
  • Leetcode - 周赛425
  • EditInPlace就地编辑:Dom vs Form
  • 缓存与缓冲
  • 基于PHP的音乐网站的设计与实现
  • 每日速记10道java面试题03
  • 写一份客服网络安全意识培训PPT
  • 如何分段存储Redis键值对
  • 智慧银行反欺诈大数据管控平台方案(二)
  • windows C#-为类或结构定义值相等性(上)
  • 网络原理-初识