二叉树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.mzph.cn/news/202202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSONArray添加JSONObject数据组装后,toString()发现值有{“$ref“:“$[0]“}乱码问题

出现这个问题是FastJson的循环引用造车的,可以手动设置取消FastJson的循环引用的检查。代码如下: JSONArray oaArr new JSONArray(); //取消JSON循环引用检查 String s JSON.toJSONString(oaArr, SerializerFeature.DisableCircularReferenceDetect)…

算法通关村第十四关|黄金挑战|数据流的中位数

数据流的中位数 原题:力扣295. 设计一种数据结构可以支持添加整数和返回中位数的操作。 之前写过找中间用两个堆,这道题就可以使用一个大顶堆和一个小顶堆。 大顶堆存储比较小的元素,小顶堆存储比较大的元素。 class MedianFinder {Prio…

quickapp_快应用_DOM节点

DOM $element获取某元素的宽高 $element $element是通用方法(提供给所有组件调用的方法) 获取指定 id 的组件 dom 对象,如果没有指定 id,则返回根组件 dom 对象用法。 this.$element(id名)获取某元素的宽高 const element this.$element(元素id名)…

龙芯loongarch64服务器编译安装pytorch

前言 PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序,它是一个基于Python的可续计算包。在通过龙芯开源仓库下载依赖包后,执行import torch后,发现其中安装的"pytorch"就无法正常使用,这里就演示下pytorch整个编译流程。 1、环境准…

supervisor杀死不掉程序的问题分析

项目场景: supervisor可以说是linux上大名鼎鼎的守护进程工具了,它的易用性在我所有用过的工具里算是排名前列的。但在使用过程中也不免会出一些问题,很多都是设置错误导致的。 问题描述 使用java启动一个jar,调用stop的时候jar…

推荐一款Excel快速加载SQL的插件,方便又好用

如果告诉你只需要双击一下,SQL数据库中存放在表里面的数据,就能加载到你的Excel中,你想不想要? 今天给大家推荐一款好用的Excel插件,安装简单,使用方便,是经常使用SQL数据库的不二。 这款插件…

Web开发学习HTTP协议、通过浏览器控制台学习HTTP协议。

文章目录 HTTP协议1.HTTP协议是什么?2.HTTP协议的特点3.什么是URL?4.通过浏览器控制台学习HTTP协议Request Headers请求数据格式说明Response Headers请求数据格式说明 5.HTTP工作原理 HTTP协议 1.HTTP协议是什么? HTTP协议是一种超文本传输协议&…

前端实现主题(深色模式)切换的几种方案

方案一:link 动态引入 通过改变link 标签的 href 属性实现动态修改样式(暂不推荐这种方案) 优点:实现了按需加载,提高了性能; 缺点:动态加载样式文件,可能会因为网络问题导致样式…

使用Scanner扫描器和if语句来判断QQ等级的活跃程度

一、主要特点 总体使用try包围起来,用到了Scanner扫描器,还用到了若干if语句。 二、运行代码 import java.util.Scanner; public class QQtest {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) {System.out.pr…

torch 如何实现两点分布采样,100个样本中20个样本为1,80个为2

方法1 可以使用 PyTorch 中的 torch.distributions 模块实现两点分布采样。具体来说,可以使用 Categorical 分布将数字1和数字2的概率分别设为0.2和0.8,然后调用 sample() 方法进行采样。 下面是实现上述功能的代码示例: import torch # 创…

rename--统一的PRF

将ARF/PRF进行合并,合同之后的不见,称之为统一的PRF(Physical Register File);存储的是speculative的,以及正确的(retire)寄存器值;

【已解决】Qt mouseMoveEvent、mouseReleaseEvent失效无法触发

问题背景 我有一个派生自QGraphicsObject的类,这个类其实就是同时继承了QGraphicsItem和QObject的类 相当于在QGraphicsItem的基础上增加了事件消息的功能 我派生出来的这个类主要是实现了由多个点组成的多边形 现在想实现一个功能,拖动其中的某个点…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后,又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上,星纪魅族集团(下称“魅族”)董事长兼CEO沈子瑜宣布,魅族正式进入汽车市场,将在2024年第一季度启动“DreamCar共创…

promise使用示例

下面是一个 Promise 使用示例,通过 Promise 实现异步操作的链式调用: const getUser (userId) > {return new Promise((resolve, reject) > {// 模拟异步请求setTimeout(() > {const users [{ id: 1, name: Alice },{ id: 2, name: Bob },{ …

按需分发饼干

题意: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j&#xff0c…

ChatGPT学习笔记

1 模型训练 ChatGPT在训练时使用了PPO方法;

【STM32】STM32学习笔记-课程简介(01)

00. 目录 文章目录 00. 目录01. 课程简介02. 硬件设备03. 软件工具04. 硬件套件4.1 面包板和跳线/飞线4.2 杜邦线和STM32最小系统板4.3 STLINK和OLED显示屏4.4 LED和按键4.5 电位器和蜂鸣器4.6 传感器和旋转编码器4.7 USB转串口和MPU60504.8 Flash闪存和电机模块4.9 SG90舵机 0…

win10与 vm虚拟机win7共享文件夹创建

1:在win10(主机)电脑先随意共享一个文件夹 2:在win10(主机)上创建一个网络映射 右键此电脑选择映射网络驱动器 成功后会多出这个网络位置 3:win7虚拟机设置 在虚拟机中点击计算机右键添加一个网络位置

C# Onnx CenterNet目标检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name:input.1 tensor:Float[1, 3, 384, 384] --------------------------------------------------------------- Outputs ------------------------- name&a…

安卓开发引入网络图片

<ImageViewandroid:id"id/img01"android:layout_width"match_parent"android:layout_height"200dp"android:layout_weight"1"/>ImageView加载网路图片 第一步&#xff1a;添加网络权限 <uses-permission android:name"…