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

二叉树OJ题之三

哈喽伙伴们,有一段时间没更新博客了,主要是这段时间要准备学校的期末考试,所以没有把部分时间分给博客,今天我们一起去接着看二叉树递归有关的OJ题,今天我们要学习的是 判断相同的树,力扣题目--100    ,直达链接 https://leetcode.cn/problems/same-tree/

我们先看这道题的题目要求,给我们两棵树的根节点p,q,让我们判断两棵树是否相同,无非就是判断两棵树相应的根节点是否相等,那我们就可以开始入手做题。首先我们要先判断两棵树同时为空的情况,那就返回true即

if(p==NULL&&q==NULL)//两棵树同时为空
    {
        return true;
    }

两棵树都为空的情况判断了,还有一棵树为空,一棵树不为空的情况呢?,还是一样的套路,即

 if(p==NULL||q==NULL)//只有一颗树为空
    {
        return false;
    }

为什么这么写大家明白吗?代码能进到这个if里面前提是两棵树不能同时为空了,所以我们用||就可以判断有一棵树为空的情况,如果如果p==NULL就不会判断后面q==NULL,如果p!=NULL,会进行判断q==NULL,只要是满足二者中的一种情况,那这两棵树就不会相等,就会返回false。

树为空的情况判断了,代码继续往下走就是不是空树,那就直接判断p和q的val是否相等,即

if(p->val!=q->val)//判断p和q的val
    {
        return false;
    }

如果p和q的val不相等的话,那这两棵树注定是不相同的,无需往下继续走,直接就可以返回false。

再往下走的话就证明p和q作为两棵树的根结点是相等的,我们可以递归判断两棵树的左子树和右子树,即

return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);//递归判断左右子树

代码到这里就写完了,我们运行提交

 完整代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
    if(p==NULL&&q==NULL)
    {
        return true;
    }
    if(p==NULL||q==NULL)
    {
        return false;
    }
    if(p->val!=q->val)
    {
        return false;
    }
    return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
}


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

相关文章:

  • 速盾:高防 CDN 和 CDN 的缓存机制都一样吗?
  • MFC工控项目实例二十九主对话框调用子对话框设定参数值
  • redis bind 127.0.0.1和bind 10.34.56.78的区别
  • vue2.7.14 + vant + vue cli脚手架转vite启动运行问题记录
  • 前端请求后端php接口跨域 cors问题
  • 【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据,LabVIEW 上位机绘制演化曲线
  • js基础之事件监听案例入门
  • Vue3炫酷可旋转的3D地球
  • 【500强 Kubernetes 课程】第4章 dockerfile基础篇-基本语法
  • Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2
  • Kafka 的特点和优势
  • 电脑出现蓝屏提示0xc0000001错误的解决办法,解决错误代码0xc0000001
  • 基于c++版本链栈改-Python思维总结
  • Java八股文面试全套真题【含答案】-XML篇
  • CSU计算机学院2023秋C语言期中题目思路分享(前三道题)
  • 一起学docker系列之十七Docker Compose 与手动操作的比较与优势分析
  • Linux(gRPC):Ubuntu22.04安装gRPC
  • 程序员都在收藏的免费好用API接口
  • Python Pandas处理csv文件常用操作代码
  • MAC笔记本里Spyder python 的安装问题 和 虚拟环境VENV的创建
  • 大话数据结构-查找-多路查找树
  • SimplePIR——目前最快单服务器匿踪查询方案
  • 基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(二)
  • 输入日期求n天后
  • 二叉树的前、中和后序遍历的递归与迭代实现
  • Springboot 项目关于版本升级到 3.x ,JDK升级到17的相关问题