二叉树OJ题讲解之一

今天我们一起来做一道初级的二叉树OJ题,都是用递归思想解答

力扣965.单值二叉树       链接https://leetcode.cn/problems/univalued-binary-tree/description/

 所谓单值二叉树就是这棵二叉树的所有节点的值是相同的,那我们要做这道题,肯定要把这棵树的所有结点遍历一遍,看看所有结点的值是否相等。那怎么遍历呢?二叉树有前序遍历、中序遍历、后序遍历和层次遍历,对于这道题而言,要看所有结点的值是否相等,无疑前序遍历是最方便的,因为我们只有先检查了根节点的值是一直才能继续遍历左右子树。所以,我们开始解答这道题

我们想,如果这棵树是一棵空树,该怎么处理? 我们认为如果是一棵空树就返回true;

if(root==NULL){return true;}

接下来走到这里肯定就不为空树,但是左右子树还是有可能一边是空的,那我们分开处理。如果左子树不为空,在这个前提下要是左子树的值等于根节点的值我们返回true,但是我们这样写还是到后面会麻烦,因为只要左子树的值等于根节点的值就true的话,那左子树的左子树呢?后面就不会判断到,所以我们这里还是以不相等的条件进行处理,即

if(root->left!=NULL&&root->left->val!=root->val){return false;}

同理右子树不为空我们可以写成

if(root->right!=NULL&&root->right->val!=root->val){return false;}

空树、左右子树都不为空的情况我们都判断了,那走到这里,就是根节点的左右子树都等于根节点的值,那我们就继续以根节点的左子树为根,根节点的右子树为根判断了,并且这两个必须同时满足那才能返回true,即

return isUnivalTree(root->left)&&isUnivalTree(root->right);

我们运行提交,就通过啦

完整代码

bool isUnivalTree(struct TreeNode* root) {if(root==NULL)//为空的情况{return true;}if(root->left!=NULL&&root->left->val!=root->val)//左子树不为空且左子树不等于根{return false;}if(root->right!=NULL&&root->right->val!=root->val)//右子树不为空且右子树不等于根{return false;}return isUnivalTree(root->left)&&isUnivalTree(root->right);//左右子树等于根的值,继续下面的左右子树}

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

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

相关文章

适用于iOS 的顶级苹果数据恢复软件

数据丢失可能随时发生在任何人身上,这可能是一种令人沮丧的经历。丢失 iOS 设备上的重要数据可能会造成特别严重的损失,因为其中可能包括有价值的照片、联系人、消息和其他重要文件。幸运的是,有多种数据恢复工具可以帮助用户恢复丢失的数据。…

Python基础:推导式(Comprehensions)详解

1. 推导式概念 Python推导式(comprehensions)是一种简洁而强大的语法,用于从已存在的数据(列表、元组、集合、字典等)中创建新的数据结构。推导式包括: 列表推导式元组推导式字典推导式集合推导式 2. 列表…

Vue 实现低代码开发平台,没想到这么好用!

前言 在众多开发技术中,Vue 组件化开发技术以其卓越的灵活性和高效性备受瞩目。 低代码平台相信不少人知道它的存在,而且现在大部分公司都在开发自己的低代码平台,首先我们来看看低代码平台可视化界面: 官网:https:/…

跨标签页通信的8种方式(下)

跨标签页通信是指在浏览器中的不同标签页之间进行数据传递和通信的过程。在传统的Web开发中,每个标签页都是相互独立的,无法直接共享数据。然而,有时候我们需要在不同的标签页之间进行数据共享或者实现一些协同操作,这就需要使用跨…

1233:单词倒置(C语言)

题目描述 最近birdfly收到了女友的几份信件,为了只要他俩知道信件的秘密,女友把信件里的每个单词都倒置了。这样只有birdfly将它们倒置过来才能明白女友的心思了。为此birdfly还特意请你编写程序帮他解决一下这个问题。 简单起见假定每封信只包含英文单词…

DDD全网最通俗易懂讲解(一)

基础概念 领域 领域就是用来确定范围的,范围即边界,这也是DDD在设计中不断强调边界的原因。简言之,DDD的领域就是这个边界内要解决的业务问题域。领域可以进一步划分为子领域。一个领域相当于一个问题域,领域拆分为子域的过程就…

详解二叉树

【本节目标】 1.树的概念和结构 2.二叉树的概念和结构 3.二叉树的顺序结构及实现 4.二叉树的链式结构及实现 1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它由一个根结点和n(>0)个子树构成,之所以叫做树,是因为它很像生活…

Hive数据库与表操作

文章目录 一、准备工作二、Hive数据库操作(一)Hive数据存储(二)创建数据库(三)查看数据库(四)修改数据库信息 一、准备工作 二、Hive数据库操作 (一)Hive数据…

Python Selenium 图片资源自动搜索保存 项目实践

实现访问首页 from os.path import dirnamefrom selenium import webdriverclass ImageAutoSearchAndSave:"""图片自动搜索保存"""def __init__(self):"""初始化"""self.driver webdriver.Chrome(executable_pa…

西南科技大学数字电子技术实验二(SSI逻辑器件设计组合逻辑电路及FPGA实现 )FPGA部分

一、实验目的 1、掌握用SSI(小规模集成电路)逻辑器件设计组合电路的方法。 2、掌握组合逻辑电路的调试方法。 3、学会分析和解决实验中遇到的问题。 4、学会用FPGA实现本实验内容。 二、实验原理 包括:原理图绘制和实验原理简述 1、1位半加器 2、1位全加器 3、三…

2021年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

文章目录 2021年全国硕士研究生入学招生考试英语二试题SectionⅠUse of EnglishSection Ⅱ Reading ComprehensionText 1Text 2Text 2Text 3Text 4 Section III TranslationSection Ⅳ Writing 2021年全国硕士研究生入学招生考试英语二试题 SectionⅠUse of English Directio…

oracle数据库备份2(expdp)

使用exp命令定时进行数据库备份的操作前面已经记录过: oralce数据库定时备份 下面记录下使用更加高效的expdp命令和impdp,这两个命令同样是用来做数据库备份和还原的,但速度更快,效率更高,缺点是只能用在服务器端进行…

阿里云ACE认证之国际版与国内版对比!

大厂疯狂裁员,互联网行业迎来寒冬,技术人员被动陷入疯狂内卷。在愈加内卷的IT领域,“云计算”作为少有的蓝海,无疑是打工人未来实现职场提升、摆脱内卷的绝佳选择! 对于云计算行业的人来说,最值得考的肯定是…

洪泽湖流域建筑物、人口密度与土地利用数据技术服务

一.背景介绍 人类社会发展离不开土地,没有土地就没有人类,土地利用随着人类的出现而发生。人类为了一定的社会或经济方面的目的,会通过利用、改造等活动。从土地上获得更多的资源。土地利用既要受自然条件的制约,同时也…

2023年国赛试题:配置inux1 为 CA 服务器

试题内容:配置 linux1 为 CA 服务器,为 linux 主机颁发证书。证书颁发机构有 效期 10 年,公用名为 linux1.skills.lan。申请并颁发一张供 linux 服务器使用的证书,证书信息:有效期 =5 年,公用名=skills.lan, 国家=CN,省=Beijing,城市=Beijing,组织=skills,组织单位…

Unity UGUI的自动布局-LayoutGroup(水平布局)组件

Horizontal Layout Group | Unity UI | 1.0.0 1. 什么是HorizontalLayoutGroup组件? HorizontalLayoutGroup是Unity UGUI中的一种布局组件,用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小,使它们…

亚马逊云科技实现了奇瑞捷豹路虎SAP系统的上云目标并保持成本优化

11月23日,“2023第八届IDC中国数字化转型年度盛典”正式开启并揭晓“2023 IDC中国未来企业大奖-卓越奖”获奖企业,奇瑞捷豹路虎汽车有限公司(以下简称“奇瑞捷豹路虎”)凭借“基于云原生的智慧化运营平台”项目,继获得…

自动驾驶HWP功能规范

HWP功能规范 Highway Pilot Functional Specification 文件状态: 【√】草稿 【】正式发布 【】正在修改 文件起草分工 撰写: 审核: 编制: 签名: 日期: 审核: 签名: 日期&am…

企业业务场景如何实现自动化连接?

为什么要实现企业业务场景的自动化连接? 可提高效率,自动化连接可以减少人工操作和手动干预的需求,从而提高业务处理的速度和效率。通过自动化连接,不同的系统、应用程序和流程可以自动协同工作,减少了人工处理的时间和…

【计算机组成原理】存储系统

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理计算机组成原理中 存储系统的知识点和值得注意的地方 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以…