二叉树习题精讲-相同的树

相同的树

100. 相同的树 - 力扣(LeetCode)icon-default.png?t=N7T8https://leetcode.cn/problems/same-tree/description/

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

解释:

  1. bool isSameTree(struct TreeNode* p, struct TreeNode* q)

    • 这是函数的声明行,定义了一个名为 isSameTree 的函数。它接收两个参数,分别是指向 TreeNode 结构体的指针 p 和 q,表示要比较的两棵树的根节点。函数返回一个布尔值 bool,如果两棵树相同则返回 true,否则返回 false
  2. if (p == NULL && q == NULL)

    • 这行代码检查两个节点 p 和 q 是否都为空。如果都为空,说明两棵树在当前节点上是相同的(都是空树),因此返回 true
  3. if (p == NULL || q == NULL)

    • 这行代码检查两个节点 p 和 q 中是否有一个为空而另一个不为空。如果存在这样的情况,说明两棵树至少在当前节点上就不同,因此返回 false
  4. if (p->val != q->val)

    • 这行代码检查两个节点 p 和 q 的值是否不同。如果值不同,说明两棵树在当前节点上不相同,因此返回 false
  5. return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);

    • 如果当前节点 p 和 q 都不为空且值相同,这行代码递归地调用 isSameTree 函数,分别比较 p 的左子节点和 q 的左子节点,以及 p 的右子节点和 q 的右子节点。只有当左子树和右子树都相同,整个树才被认为是相同的,因此返回两个递归调用的结果的逻辑与(&&)。

总结来说,isSameTree 函数通过递归的方式比较两棵树的每个节点。首先检查当前节点是否为空,如果不为空再检查节点的值是否相同。如果所有对应的节点都相同,那么函数返回 true,表示两棵树相同;如果任何一对对应节点不同,函数返回 false,表示两棵树不同。

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

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

相关文章

OpenSSL自签名证书

文章目录 生成1. 生成根证书的私钥(root_private_key.pem)2. 创建根证书的CSR和自签名证书(root_csr.pem)3. 生成服务器证书的私钥(server_private_key.pem)4. 创建服务器证书的CSR(server_priv…

考研经验总结——复试上岸(附通信原理)

上岸啦,一志愿拟录取,初试第5、复试4,总成绩第4 文章目录 一、复试流程二、注意事项三、简历模板3.1 基本信息3.2 报考情况3.3 校内实践3.4 荣誉奖励3.5 项目经验3.6 自我介绍 四、通信原理五、最后的总结 一、复试流程 1、 复试流程 准备复…

设计模式(简要,应付软考)

简单工厂模式(Simple Factory Pattern): 又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 单例实例&#…

03- Redis 中的 Hash 数据类型和应用场景

1. 介绍 Hash 是一个键值对(key - value)集合,其中 value 形式如: value [{field1, value1}, ...{fieldN, valueN}]。Hash 特别适合用于存储对象。 Hash 和 String 对象的区别如下: Redis Stringuid:1:name ------…

如何让APP打开时无广告(一秒学会)

相信大家平时在玩手机的时候多多少少都会在意过打开app时的启动广告,虽然可以自己点击跳过,但是确实十分麻烦,很多人想知道如何跳过app启动广告。 现在网上很多切换手机中英文、安装拦截软件等等,我都试过了! 统统不管…

基于Netty实现WebSocket服务端

本文基于Netty实现WebSocket服务端,实现和客户端的交互通信,客户端基于JavaScript实现。 在【WebSocket简介-CSDN博客】中,我们知道WebSocket是基于Http协议的升级,而Netty提供了Http和WebSocket Frame的编解码器和Handler&#…

N1912A P 系列双通道功率计

N1912A 双通道功率计 产品综述 <<<P 系列双通道功率计>>> Keysight N1912A P 系列双通道功率计可以提供峰值功率、峰均比、平均功率、上升时间、下降时间 NS 脉冲宽度测量。 “ 功能特点 30 MHz 视频带宽 能够以高达 100 MSa/s 的采样率执行单次实时捕…

2种方法将集合数据List构建成树形结构

文章目录 递归循环构建树结构hutool.TreeUtil.build构建树结构 递归循环构建树结构 先查最外层树节点数据&#xff0c;再递归遍历每一层子节点数据 public ApiResultDto<List<LocationDto>> getTreeByParams(LocationSearchDto searchDto, SecurityUser user) {// …

柔性自驱动生物“电子衣”促进伤口愈合

引用信息 文 章&#xff1a;Combined Amniotic Membrane and Self-Powered Electrical Stimulator Bioelectronic Dress Promotes Wound Healing 期 刊&#xff1a;ACS Applied Materials & Interfaces&#xff08;影响因子&#xff1a;9.5&#xff09; 发表时间…

如何高效搜索?99%的人都不知道的搜索进阶小技巧

如何高效搜索任何你想要的信息&#xff1f; 比如怎么找第一手的行业研究报告&#xff1f; 在哪查高清无码的图片素材&#xff1f; 怎么搜最新的AI工具教程&#xff1f; 遇到以上问题你会怎么搜&#xff1f; 可能大部分人都是直接打开百度查关键词&#xff0c;虽然随便一搜…

【贪心算法】C++ 解决算法题:买卖股票 / K次取反 / 按身高排序 / 优势洗牌

1. 前言 1.1 贪心算法介绍 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取当前状态下最优决策的算法。贪心算法通常用来解决最优化问题&#xff0c;其核心思想是通过局部最优解逐步推导出全局最优解。 在贪心算法中&#xff0c;我们并不总是考…

Java面试进阶指南:高级知识点问答精粹(一)

Java 面试问题及答案 1. 什么是Java中的集合框架&#xff1f;它包含哪些主要接口&#xff1f; 答案&#xff1a; Java集合框架是一个设计用来存储和操作大量数据的统一的架构。它提供了一套标准的接口和类&#xff0c;使得我们可以以一种统一的方式来处理数据集合。集合框架主…

云计算-交互式数据处理 (Interactive Data Processing)

AWS Glue DataBrew (AWS Glue DataBrew) 数据预处理是任何数据分析任务之前的重要步骤。AWS Glue DataBrew 是一个可视化工具&#xff0c;允许我们预处理数据&#xff0c;包括清洗和规范化数据。此AWS服务提供许多数据准备功能&#xff0c;包括分组、联接、过滤、重新采样、排序…

【数据结构(邓俊辉)学习笔记】二叉树04——Huffman树

文章目录 0. 概述1. 无前缀冲突编码2. 编码成本3. 带权编码成本4. 编码算法5. 算法实现流程6. 时间复杂度与改进方案 0. 概述 学习Huffman树。 1. 无前缀冲突编码 在加载到信道上之前&#xff0c;信息被转换为二进制形式的过程称作编码&#xff08;encoding&#xff09;&…

【随笔】Git 实战篇 -- Git Rebase出错?手把手教你如何优雅地解决常见问题 (四十二)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

JAVA系列:NIO

NIO学习 一、前言 先来看一下NIO的工作流程图&#xff1a; NIO三大核心组件&#xff0c;channel&#xff08;通道&#xff09;、Buffer&#xff08;缓冲区&#xff09;、selector&#xff08;选择器&#xff09;。NIO利用的是多路复用模型&#xff0c;一个线程处理多个IO的读…

探秘三相交流电子负载应用

三相交流电子负载是模拟实际负载的电子设备&#xff0c;主要用于电源、电机、变压器等产品的性能测试和老化试验。它能够精确控制电流、电压、频率等参数&#xff0c;模拟各种复杂的负载情况&#xff0c;为产品研发和质量控制提供可靠的测试手段。 三相交流电子负载在电源产品测…

#经验分享#笔记

一闪论文是一款专门用于论文写作、查重和降重的工具&#xff0c;被广泛认为是非常好用的。它可以帮助学生和研究者们更高效地撰写论文&#xff0c;并且确保内容的原创性。 首先&#xff0c;一闪论文具有强大的查重和降重功能。它可以快速准确地检测论文中的相似内容&#xff0…

4. 排序算法

文章目录 1.简单排序1.1 冒泡排序1.1.1 步骤核心思想1.1.2 参考代码1.1.3 时间复杂度1.1.4 空间复杂度1.1.5 优化 1. 2. 选择排序1.2.1 核心思想1.2.2 步骤1.2.3 参考代码1.2.4 时间复杂度1.2.5 空间复杂度1.2.6 优化 1.3 插入排序1.3.1 思想1.3.2 步骤1.3.3 参考代码1.3.4 时间…

JavaScript中的const关键字解析

在JavaScript中&#xff0c;const关键字用于声明常量&#xff0c;即那些一旦赋值后就不应更改的变量。它在许多方面与let关键字类似&#xff0c;但增加了一个重要的约束条件——必须在声明时初始化&#xff0c;并且之后尝试修改其值会导致错误。下面将深入探讨const的特性及其使…