【Leetcode】965. 单值二叉树、100. 相同的树、572. 另一棵树的子树

news2024/11/19 17:41:12

 作者:一个喜欢猫咪的的程序员

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


目录

965. 单值二叉树 

 100. 相同的树

572. 另一棵树的子树


965. 单值二叉树 

965. 单值二叉树https://leetcode.cn/problems/univalued-binary-tree/

题目描述:

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false


示例: 


思路:

左右节点都不为NULL,当root跟它的左右节点其中一个不相等时,就不是单值二叉树。当root的左右节点有一个为NULL,只需要比较另外一个不为NULL是否与root相等就可以了。这样递归就可以完成。


 代码实现:

bool isUnivalTree(struct TreeNode* root){
    if(root==NULL)
    return true;
    if(root->left&&root->left->val!=root->val)
    return false;
    if(root->right&&root->right->val!=root->val)
    return false;
    return isUnivalTree(root->left)&&isUnivalTree(root->right);
}

 100. 相同的树

100. 相同的树icon-default.png?t=M85Bhttps://leetcode.cn/problems/same-tree/

题目描述:

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

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


示例:


思路:

当p和q都不为NULL时,对应的节点相等,就递归他们左右节点继续判断。否则return false。

只有当p和q都为NULL时,return true。 


代码实现:

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    if(p==NULL&&q==NULL)
    return true;
    if(p&&q)
    {
    if(p->val==q->val)
    return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    else
    return false;
    }
    else
    return false;
}

572. 另一棵树的子树

572. 另一棵树的子树icon-default.png?t=M85Bhttps://leetcode.cn/problems/subtree-of-another-tree/

题目描述:

给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。

二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。


示例:


 思路:

利用上题相同的数的代码作为函数。

当树相等时,直接放回true。否则直接遍历每一个子树,当有一个子树相等时就返回true,否则返回false。


代码实现:

bool isSameTree(struct TreeNode* p, struct TreeNode* q){
    if(p==NULL&&q==NULL)
    return true;
    if(p&&q)
    {
    if(p->val==q->val)
    return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    else
    return false;
    }
    else
    return false;
}
bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
    if(root==NULL)
    return false;
    if(isSameTree(root,subRoot))
    return true;
    else
    return isSubtree(root->left,subRoot)||isSubtree(root->right,subRoot);
}

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

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

相关文章

蓝桥杯,我劝你不要参加的8个完美理由

蓝桥杯,是一个全国高校的IT技术比拼,如果你参加了,可能不止是刷题数量的剧增,还有你的软件人生 我劝你不要参加,因为如果你参加了,可能会有以下烦恼: 目录 1、会让你变得上进 2、会提前感受码…

OpenCV inRange 函数使用详解

本文是 OpenCV图像视觉入门之路的第6篇文章,本人详细的解决了RGB转HSV,HSV通过AI来进行HSV转 inRange() 函数的范围值操作,简单全面的解决了OpenCV对于图像中某个颜色的分析工作,本文通过识别红色区域和蓝色区域来编写示例程序和博…

从交互设计师的角度,聊聊设计工具的那些事

工欲善其事,必先利其器,这句话是出自论语,讲的是要做好一件事,工具是非常重要的,作为一个设计师,设计工具对于我们的重要性毋庸置疑,每天都在接触,也有很多感悟和心得。 我从事设计…

羟基生物素(Biotin-OH),生物素引发剂(Biotin-Cl)

产品名称:羟基生物素,生物素引发剂 英文名称:Biotin-Cl,Biotin-OH 含biotin-DSPE的胰岛素脂质体 合成生物素一硬脂酥磷脂酥乙醇胺(biotin-DSPE),制备含 biotin-DSPE 的胰岛素脂质体,以粒径和包封率为指标 制备生物素修饰的胰岛素…

如何通过视频推广的方式帮助外贸B2B企业获得询盘

会有外贸企业比较烦恼,总是寻找不到精准客户,也很少有客户向自己询盘,企业需要订单,自己的品牌想要在目标市场被知晓,如何解决这些问题呢?我们可以跟随现阶段流行的趋势——视频推广,接下来请慢…

函数作图的技巧(高数)

前言 从初中开始,我们就开始用笔在平面直角坐标系上作函数图象。随着对函数研究的不断深入,对作出的函数图象的精准度的要求也越来越高。以往我们只需要描一下点,在将点连起来即可。但用这种方法的话偏差可能会很大,所以我们不妨…

数据仓库基础与Apache Hive入门

数据仓库基本概念 数据仓库,简称数仓,用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持。 数据仓库本身并不生产任何数据,其数据来源于不同的外部系统同时数据仓库自…

前端工程化与 webpack:webpack 中的 loader

1. loader 概述 在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块。其他非 .js 后缀名结尾的模块, webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错! loader 加载器的作用…

【JavaEE】【Servlet API详解】重点!!!

努力经营当下,直至未来明朗! 文章目录【Servlet API概述】【HttpServlet】【HttpServletRequest】【HttpServletResponse】写例子:表白墙表白墙参考代码小结坚持一定很酷! 【Servlet API概述】 API其实就是一组类/方法Servlet提…

CANoe-VN5000设备的指示灯含义

我们以VN5650为例: Power 当设备通电时,Power灯亮起 Sync 当设备同步时,Sync灯亮起。Vector设备有三种时间同步方式:PTP、HW-SYNC、SW-SYNC ColorSync StateDescriptionOffNot Configured此设备没有激活的主协议或从协议,或者尚未加载配置OrangeConfigured, waiting for …

Redis布隆过滤器

什么是布隆过滤器 布隆过滤器(Bloom Filter)是一个二进制向量和一系列随机映射函数实现,用于判断一个元素是否在集合中。 如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等…

Three JS 调研

0. 结论 three.js是使用WebGL来绘制三维效果的,核心数据是3D对象和三维模型,更多的是关注如何通过webgl更精细而美的渲染数据 three.js相当于封装了webgl,但还是很底层,并不是一个类似于cesium或者mapbox这样的成熟地图框架&…

一文掌握MyBatis的动态SQL使用与原理

摘要:使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著地提升了这一特性的易用性。本文分享自华为云社区《MyBatis详解 - 动态SQL使用与原理》,作者:龙哥手记 。 动态 …

Ajax(JavaWeb-Ajax、跨域等)

1.JavaWeb - Ajax 概念:AJAX(Asynchronous Java JavaScript And Xml ):异步的JavaScript和Xml AJAX作用: 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据。 使用…

笔试训练(6)

笔试题1:将一个字符串转化成整数:把字符串转换成整数__牛客网 将一个字符串转化成整数,要求不能使用字符串转化成整数的库函数,数值为0或者字符串不是一个合法的数值那么返回0 输入描述:输入一个字符串,包含数字字母符号,可以为空…

【八股文大白话整理】

Java 重载和重写的区别 这两个都是多态的一种表现形式。 重载是在编译器通过方法中形参的静态类型确定调用方法版本的过程,是多态在编译期的表现形式。判定只有两个条件:1. 方法名一致 2. 形参列表不同 重写是在方法运行时,通过调用者的实际…

Transforming the Latent Space of StyleGAN for Real Face Editing翻译

点击下载论文 摘要 尽管最近在使用StyleGAN进行语义处理方面取得了进展,但真实人脸的语义编辑仍然具有挑战性。W空间和W空间之间的差距要求在重构质量和编辑质量之间进行权衡。为了解决这个问题,我们建议通过用基于注意力的transformers替换StyleGAN映射…

深入剖析Arthas源码

一. 前言 Arthas 相信大家已经不陌生了,肯定用过太多次了,平时说到 Arthas 的时候都知道是基于Java Agent的,那么他具体是怎么实现呢,今天就一起来看看。 首先 Arthas 是在 GitHub 开源的,我们可以直接去 GitHub 上获…

智能表格软件-FineReport JS实现自定义按钮快速给参数赋指定范围值

1. 概述 1.1 预期效果 周报、月报、季报、年报中有参数查询时,每次都需要手动选择,比较繁琐,所以就需要一种快速筛选的方法,只需点击某个按钮,就能准确定位到合适的时间范围,如下图所示: 1.2 实…

JMeter+Ant+Jenkins接口自动化测试框架

一:简介 大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件;Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具。将这三者结合起来可以搭…