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

[Java/力扣100]判断两棵二叉树是否相同

我希望通过这道题,能进一步了解递归思想和“树是递归定义的”这句话 

分析

我们的目的是写一个方法来检验两棵树是否相同

什么叫“两棵树相同”?——相同的位置存在相同的结点

有三种情况:1、两棵树一颗为空一颗不为空——不相同;2、两棵树都是空——相同;3、两个都不是空——不一定

代码

public class SameBinaryTree {public class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){}TreeNode(int val){this.val = val;}}public boolean isSameTree(TreeNode p, TreeNode q) {//两棵树都是空——相同if(p == null && q == null){return true;}//两棵树一颗为空一颗不为空——不相同if((p == null)&&(q != null) || (p != null) && (q == null)){return false;}//两个都不是空——不一定,所以我们要对其节点值进行判断if(p.val != q.val){return false;}//如果这两个根节点相同的话,然后去检查其左子树和右子树是否分别相等return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);}
}

它是怎样使用递归的

因为树是递归定义的,所以对于二叉树相关的题我们常使用递归思想。

使用递归的两个条件:

1、终止条件

        a、两棵树一颗为空一颗不为空——不相同;b、两棵树都是空——相同;

2、调用自身

        两棵树是否相同不过就是——“根节点的值是否相同/根节点的左子树是否相同/根节点的右节点是否相同”

        我们的方法表示的含义就是“根节点为 参数1 和参数2 的两棵树是否相同”。那么 参数为(参数1.left ,参数2.left)意思就是——“两个根节点的左子树是否相同”

http://www.lryc.cn/news/210658.html

相关文章:

  • BEC商务英语主题 定价策略|柯桥学商务英语口语
  • 第七章 ObjectScript 一般系统限制
  • 【Python百练——第1练】使用Python求100以内的所有偶数
  • springboot心理咨询管理系统
  • Java-API简析_java.net.URL类(基于 Latest JDK)(浅析源码)
  • C语言浮点型在内存中的存储
  • elementPlus | el-tabs 标签管理路由页面
  • 如何使用ffmpeg制作透明背景的视频
  • C#中对于using的使用方式
  • 【Java】HashMap集合
  • 百度网盘使用指南
  • CSS 滚动驱动动画与 @keyframes 新语法
  • 二十三种设计模式全面解析-原型模式进阶之原型管理器:集中管理对象原型的设计模式之道
  • 【微信小程序开发】学习小程序的网络请求和数据处理
  • 微信小程序 slot 不显示
  • Spring Boot 优雅配置yml配置文件定义集合、数组和Map
  • java+springboot+vue开发的大学生健康检测小程序
  • 从零开始的LINUX(四)
  • 组播应用层收不到问题-接收网卡绑定
  • 回流重绘零负担,网页加载快如闪电
  • QT5.15在Ubuntu22.04上编译流程
  • 【电路笔记】-交流波形和交流电路理论
  • vue2 系列:自定义 v-model
  • 广东木模板批发,建筑桥梁工程专用组合木模板
  • 工业相机常见的工作模式、触发方式
  • 【C语言】指针那些事(上)
  • liunx Centos-7.5上 rabbitmq安装
  • 蓝桥杯学长经验笔记
  • 开发库介绍
  • 基于单片机的智能清洁小车设计—控制系统设计