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

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

在这里插入图片描述
解题思路:
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);}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C#学习笔记14:SYN6288语音模块_Winform上位机控制软件
  • 使用Variadic Templates(可变参数模板)实现printf
  • electron 配置、打包 -报错解决
  • RocketMQ 的认证与授权机制
  • Hive自定义Serde,实现自定义多字符串作为分隔符
  • 【C++】对象模型和this指针
  • vivado ODT
  • 【HarmonyOS NEXT星河版开发学习】小型测试案例01-今日头条置顶练习
  • 【算法速刷(4/100)】LeetCode —— 155.最小栈
  • Java反序列化漏洞实战:原理剖析与复现步骤
  • 与大语言模型Transformer的奇妙旅程
  • 手机三要素接口怎么对接呢?(二)
  • MediaHub中的卡片实现进展汇报
  • 数据结构:链表经典算法OJ题
  • 【Linux】权限理解
  • 【391天】每日项目总结系列128(2018.03.03)
  • co模块的前端实现
  • css属性的继承、初识值、计算值、当前值、应用值
  • DOM的那些事
  • java多线程
  • Material Design
  • Mysql数据库的条件查询语句
  • PHP 小技巧
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 百度小程序遇到的问题
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 三栏布局总结
  • 使用 Docker 部署 Spring Boot项目
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一些关于Rust在2019年的思考
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 怎样选择前端框架
  • ​Java并发新构件之Exchanger
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • (26)4.7 字符函数和字符串函数
  • (阿里云万网)-域名注册购买实名流程
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (六)软件测试分工
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (四)Controller接口控制器详解(三)
  • (学习日记)2024.01.09
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)我也是一只IT小小鸟
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .Net CF下精确的计时器
  • .NET CLR Hosting 简介
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET 通过系统影子账户实现权限维持