二叉树OJ题:LeetCode--100.相同的树

news2024/12/24 2:47:33

朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第100道二叉树OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!

数据结构与算法专栏:数据结构与算法

个  人  主  页 :stackY、

C 语 言 专 栏C语言:从入门到精通

LeetCode--100.相同的树:https://leetcode.cn/problems/same-tree/

目录

1.题目介绍

2.实例演示

3.解题思路

代码实现:

递归展开图:


1.题目介绍

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

2.实例演示

简单的来说就是来判断两棵二叉树的对应结点是否完全相同。

3.解题思路

判断两棵二叉树是否相等最先想到的方法就是遍历,使用结点依次比较,那么二叉树的遍历方法有许多:

1. 前序遍历:根节点、左子树、右子树

2. 中序遍历:左子树、根节点、右子树

3. 后序遍历:左子树、右子树、根节点

4. 层序遍历:一层一层遍历二叉树

以上内容可以参考:https://blog.csdn.net/Yikefore/article/details/130859450?spm=1001.2014.3001.5501

那么该选用哪种遍历二叉树的方法呢? 前序遍历是比较合适的,因为前序遍历首先访问的就是根节点,如果两棵树的根节点都不相等那么就没有必要再继续往下面进行比较了,那么关于这道题最终还是要归为这棵树的子问题,也就是它的左右子树,所以使用递归实现。

在做题时要注意几个问题:

1. 结束标志--两棵树为空树、结点不相等

2. 若两棵树都为空,需要返回true,两棵树都为空满足相同的结点

3. 有一棵树为空,另一棵树不为空,就需要结束

代码实现:

/**
 * 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);
}

代码解读:

首先我们对两棵树进行检查,判断两棵树是否都为空树,如果两棵树都为空树,即两棵树相等,即可返回true,如果两棵树都不为空,进行下一步的判断其中只有一棵树为空,若其中只有一颗树为空,那么表示两棵树不相等,即可返回false,若两棵树都不为空,即可判断它们的结点是否相等,若不相等,直接返回false,若相等,则直接递归判断它们的左右子树,又重新转化为了子问题,直到将两颗树全部遍历完毕。

递归展开图:

 

朋友们、伙计们,美好的时光总是短暂的,我们本期的的分享就到此结束,最后看完别忘了留下你们弥足珍贵的三连喔,感谢大家的支持!  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686482.html

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

相关文章

脑机接口:运动想象简介

脑机接口:运动想象简介 0. 脑机接口1. 运动想象2. 信号处理2.1 信号采集2.2 信号预处理2.3 特征提取2.4 分类识别 3. EEG波段介绍4. 脑电图电极定位5. 总结 0. 脑机接口 脑机接口(Brain-Computer Interface, BCI):它是…

MATLAB 之 可视化图形用户界面设计

这里写目录标题 一、可视化图形用户界面设计1. 图形用户界面设计窗口1.1 图形用户界面设计模板1.2 图形用户界面设计窗口 2. 可视化图形用户界面设计工具1.1 对象属性检查器2.2 菜单编辑器2.3 工具栏编辑器2.4 对齐对象工具2.5 对象浏览器2.6 Tab 键顺序编辑器 3. 可视化图形用…

途乐证券|股票XR是什么意思?买股票为什么赚不到钱?

股票市场上有时会出现一些股票在其名称前加上英文字母的情况,比如XD、XR等。那么股票XR是什么意思?买股票为什么赚不到钱?途乐证券为大家准备了相关内容,以供参考。 股票XR是什么意思? 股票名称中带有XR是表示股票在进…

yolov5-cls部署之onnx导出

本文旨在介绍说明yolov5自带的分类如何导出动态的batch的onnx。其中输出两种形式: 形式(1):导出带softmax映射到概率的 形式(2):导出不带softmax的,这个也是官方默认的方式 一、动…

连接服务器,再连接VSCode

一、 创建账号,查找公钥 通过命令窗口 a. 打开你的 git bash 窗口 b. 进入 .ssh 目录:cd ~/.ssh c. 找到 id_rsa.pub 文件:ls d. 查看公钥:cat id_rsa.pub 或者 vim id_rsa.pub 查看本机 ssh 公钥,生成公钥 二、用…

Sangfor华东天勇战队:mybatis-plus demo

基本依赖添加&#xff0c;表创建&#xff0c;启动类&#xff0c;测试类 引入依赖&#xff1a; <!-- mybatis-plus 依赖--> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version…

【vue2】封装文字过长自动省略部分并且鼠标悬浮显示全部

技术&#xff1a;Ant design vue1.7.8 UI框架、vue2.X 需求:实现文字过长自动省略部分&#xff0c;鼠标悬浮显示全部 效果图&#xff1a; 图一&#xff1a; 图二&#xff1a; 1.封装组件代码&#xff1a; src/components/Ellipsis/index.js 文件下代码 import Ellipsis f…

d2l_第七章学习_卷积神经网络

参考: d2l今日学习——卷积神经网络&#xff08;CNN&#xff09;https://blog.csdn.net/m0_61165991/article/details/124176077图像工程&#xff08;上册&#xff09;-图像处理傅里叶变换https://blog.csdn.net/qq_43369406/article/details/131350139 x.1 前储知识&#xff…

4-移动端适配-2

01-vw适配方案 vw和vh基本使用 vw和vh是相对单位&#xff0c;相对视口尺寸计算结果 vw&#xff1a;viewport width&#xff08;1vw 1/100视口宽度 &#xff09;vh&#xff1a;lviewport height ( 1vh 1/100视口高度 ) vw布局 vw单位的尺寸 px 单位数值 / ( 1/100 视口宽…

STM32:探索嵌入式开发的关键技术

在嵌入式系统开发领域&#xff0c;STMicroelectronics的STM32系列微控制器备受推崇。然而&#xff0c;对于初学者来说&#xff0c;全面掌握STM32并非易事。下面我们将探讨STM32的学习曲线&#xff0c;帮助您更好地理解其中的挑战与收获。 抽象层次的挑战&#xff1a;STM32是一…

光谱分析的统计学角度-1-统计学导论

统计分析以可见或不可见的形式存在于我们生活的各个方面&#xff0c;其可见的形式有数字化、图形化等分析方法&#xff0c;不可见的形式包括经验、常识和感觉。对于以实验数据为基础的光谱分析方法&#xff0c;统计分析是其理论分析和工程应用的基础&#xff0c;如何从统计学的…

网络安全能力成熟度模型介绍

一、概述 经过多年网络安全工作&#xff0c;一直缺乏网络安全的整体视角&#xff0c;网络安全的全貌到底是什么&#xff0c;一直挺迷惑的。目前网络安全的分类和厂家非常多&#xff0c;而且每年还会冒出来不少新的产品。但这些产品感觉还是像盲人摸象&#xff0c;只看到网络安…

综合使用各类方法,彻底关闭win10自动更新

目录 一&#xff1a;禁用window update服务 二&#xff1a;在策略中关闭win10自动更新的相关设置 三&#xff1a;任务计划内的Win10更新 四&#xff1a;在注册表中关闭Win10自动更新 结果&#xff1a; 另一种针对注册表的方法&#xff1a; 各个网站文章&#xff0c;作者找了很久…

elementUI中el-upload的使用以及遇到的坑(手动上传案例)

做项目时遇到一个需求&#xff0c;支持同时上传多个图片。element-ui 的 upload 组件支持多选文件&#xff0c;只需要配置参数 multiple 为 true 即可。但是这个组件默认会将多选的文件分多次进行上传&#xff0c;于是就会存在多次的上传请求&#xff08;即同时上传3个文件&…

46从零开始学Java之静态代码块和静态类、静态导入

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在上一篇文章中&#xff0c;壹哥给大家讲解了static静态关键字&#xff0c;以及静态变量、静态常量和…

C4.5算法

假设我们有一个关于餐厅顾客的数据集&#xff0c;其中包括9个样本&#xff0c;每个样本有3个属性&#xff1a;天气、是否有预订和是否是周末&#xff0c;以及一个类别标签&#xff0c;表示该顾客是否会来餐厅&#xff08;是或否)。 数据集如下&#xff1a; 使用C4.5算法来构建…

DAMO-YOLO:一种平衡速度和准确性的新目标检测框架

DAMO-YOLO&#xff1a;一种平衡速度和准确性的新目标检测框架 1.介绍2.关键技术2.1. NAS主干网络&#xff1a;MAE-NAS2.2. Large Neck&#xff1a;RepGFPN2.3. Small Head&#xff1a;ZeroHead2.4. 标签分配&#xff1a;AlignOTA2.5 模型蒸馏 3.性能效果展示 作者&#xff1a;K…

CART算法

假设我们有一个二元分类问题&#xff0c;数据集包含以下四个样本&#xff1a; 特征1特征2类别0.20.310.40.500.60.700.80.90 可以使用CART算法来建立一个决策树模型。 1、首先&#xff0c;我们需要选择一个特征和阈值来对数据集进行划分。假设我们选择特征1和阈值0.5&#x…

基于Java中国咖啡文化宣传网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

IDEA创建maven工程JDBC连接MySQL数据库中的遇到的问题以及相应的解决方案

首先创建一个maven工程 然后点击进入pom.xml文件&#xff0c;输入安装依赖。 输入数据库配置文件原码&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version>…