代码随想录算法跟练 | Day15 | 二叉树 Part02

个人博客主页:http://myblog.nxx.nx.cn
代码GitHub地址:https://github.com/nx-xn2002/Data_Structure.git

Day15

226. 翻转二叉树

题目链接:
https://leetcode.cn/problems/invert-binary-tree/

题目描述:
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

思路:
本题可以使用递归的思路,我们可以注意到,翻转一个二叉树后,二叉树中的所有子树其实都经过过翻转,因此可以通过递归让根节点的左右子树先进行翻转操作,然后将根节点的左指针指向右子树根节点,右指针指向左子树根节点,完成当前树的翻转。

代码实现:

class Solution {public TreeNode invertTree(TreeNode root) {if (root == null) {return null;}invertTree(root.right);invertTree(root.left);TreeNode temp = root.left;root.left = root.right;root.right = temp;return root;}
}

101. 对称二叉树

题目链接:
https://leetcode.cn/problems/symmetric-tree/

题目描述:
给你一个二叉树的根节点 root , 检查它是否轴对称。

思路:
本题也是可以使用递归来实现,当根节点为空时,可以判断这个二叉树是对称的,接下来,就是如果左右子树也满足对称,当前二叉树就是对称的。左右子树满足对称的条件则是左子树的左子树和右子树的右子树、左子树的右子树和右子树的左子树都满足对称。

代码实现:

class Solution {public boolean isSymmetric(TreeNode root) {if (root == null) {return true;}return compare(root.left, root.right);}private boolean compare(TreeNode left, TreeNode right) {if (left == null && right == null) {return true;} else if (left == null || right == null) {return false;}if (left.val != right.val) {return false;}return compare(left.left, right.right) && compare(left.right, right.left);}
}

104.二叉树的最大深度

题目链接:
https://leetcode.cn/problems/maximum-depth-of-binary-tree/

题目描述:
给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

思路:
本题使用递归也很好理解,当前节点为空时,返回当前节点为根节点的树最大深度为 0。当当前节点不为空时,该树的最大深度就是左子树的最大深度和右子树最大深度的最大值加一,至此,完成递归

代码实现:

class Solution {public int maxDepth(TreeNode root) {if (root == null) {return 0;}return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;}
}

111. 二叉树的最小深度

题目链接:
https://leetcode.cn/problems/minimum-depth-of-binary-tree/

题目描述:
给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

思路:
本题看上去和上一题一样,但实际实现需要考虑的更多,因为最小深度的定义是从根节点到最近叶子节点的最短路径上的节点数量,我们的递归需要在叶子结点处返回结果,即左右子树都为空。

代码实现:

class Solution {public int minDepth(TreeNode root) {if (root == null) {return 0;}if (root.left == null && root.right == null) {return 1;}int res = Integer.MAX_VALUE;if (root.left != null) {res = Math.min(minDepth(root.left), res);}if (root.right != null) {res = Math.min(minDepth(root.right), res);}return res + 1;}
}

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

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

相关文章

构造函数的小白理解

一、实例 using System; using System.Collections; using System.Collections.Generic; using UnityEngine;//定义一个名为Question的类,用于存储问题及相关信息 [Serializable] public class Question {public string questionText;//存储题目文本字段public str…

【云原生】更改Kubernetes为ipvs代理模式

更改Kubernetes为ipvs代理模式 文章目录 更改Kubernetes为ipvs代理模式资源列表基础环境一、kube-proxy介绍1.1、userspace模式1.2、iptables代理模式1.3、ipvs代理模式 二、更改代理模式2.1、查看kube-proxy代理模式2.2、更改代理模式2.2.1、所有节点安装IPVS软件2.2.2、所有节…

Unix/Linux shell实用小程序1:生字本

前言 在日常工作学习中,我们会经常遇到一些不认识的英语单词,于时我们会打开翻译网站或者翻译软件进行查询,但是大部分工具没有生词本的功能,而有生字本的软件又需要注册登陆,免不了很麻烦,而且自己的数据…

风控图算法之中心性算法(小数据集Python版)

风控图算法之中心性算法(小数据集Python版) 图算法在金融风控领域的应用已经超越了传统的社区发现技术,这些技术曾被主要用于识别和分析欺诈性行为模式,例如黑产团伙。当前,一系列图统计算法,包括介数中心…

LoRaWAN网关源码分析(SPI篇)

目录 一、前言 二、lgw_spi_open函数 三、lgw_spi_w函数 四、lgw_spi_r函数 五、lgw_spi_wb函数 六、lgw_spi_rb函数 一、前言 本篇文章整理了LoRaWAN网关如何处理与 LoRa 前端设备之间的 SPI通信(在loralgw_spi.c文件中)。对SPI协议不了解的可以看…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数: EXPLODE(ARRAY):将ARRAY中的每一元素转换为每一行 EXPLODE(MAP):将MAP中的每个键值对转换为两行,其中一行数据包含键,另一行数据包含值 数据样例: 1、将每天的课程&#…

免费代码生成工具

领取&安装链接:Baidu Comate 领取季卡 代码自动化生成工具,软件工程师可以在ide中沉浸式写代码,自动化给出代码生成,自然语言直接输出代码。 1.Baidu Comate是什么? Baidu Comate是JetBrains/VSCode插件&#…

ServletConfig与ServletContext详解

文章目录 概要web.xmlServletConfig介绍ServletConfig实例ServletConfig细节ServletContext介绍ServletContext实例ServletContext细节ServletContext获得服务访问次数&#xff08;可拓展&#xff09;总结 概要 web.xml <?xml version"1.0" encoding"UTF-…

OBD诊断(ISO15031) 02服务

文章目录 功能简介请求和响应1、read-supported PIDs1.1、请求1.2、肯定响应 2、read PID value1.1、请求1.2、肯定响应 3、同时请求多个PID4、同时读取多个PID数据 Parameter definition报文示例1、单个PID请求和读取2、多个PID请求和读取 功能简介 02服务&#xff0c;即 Req…

索引失效的场景主要有那些

1、不满足最左匹配原则 当使用联合索引时&#xff0c;查询条件没有从最左索引列开始&#xff0c;或者跳过了索引中的列&#xff0c;那么索引可能会失效。例如&#xff0c;对于联合索引(sex, age, name)&#xff0c;如果查询条件只包含了sex和name而没有age&#xff0c;那么索引…

亚太杯赛题思路发布(中文版)

导读&#xff1a; 本文将继续修炼回归模型算法&#xff0c;并总结了一些常用的除线性回归模型之外的模型&#xff0c;其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…

oracle数据库之使用Python程序调用存储过程(二十五)

在Oracle数据库中&#xff0c;你可以使用Python程序通过Oracle的数据库适配器&#xff08;如cx_Oracle&#xff09;来调用存储过程。以下是一个简单的步骤和示例代码&#xff0c;说明如何使用Python程序调用Oracle的存储过程&#xff1a; 1. 安装cx_Oracle库 首先&#xff0c…

UI(三)布局

文章目录 1、Colum和Row——垂直方向容器和水平方向容器2、ColumnSplit和RowSplit——子组件之间插入一条分割线3、Flex——弹性布局子组件的容器4、Grid和GridItem——网格容器和网格容器单元格5、GridRow和GridCol——栅格容器组件和栅格子组件6、List、ListItem、ListItemGr…

力扣每日一题 6/28 动态规划/数组

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目&#xff1a; 给你两个长度为 n 下标从 0…

密码学及其应用 —— 非对称加密/公匙密码技术

1 RSA加密算法 RSA加密算法是一种基于公钥密码学的加密技术&#xff0c;由罗纳德里维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;在1977年共同发明。RSA算法是第一个既能用于…

C++ sizeof的各种

C sizeof的各种 1. 含有虚函数的类对象的空间大小2. 虚拟继承的类对象的空间大小3. 普通变量所占空间大小4. 复合数据类型&#xff08;结构体和类&#xff09;5. 数组6. 类型别名7. 动态分配内存8. 指针9. 静态变量10. 联合体11. 结构体使用#program pack 1. 含有虚函数的类对象…

如何用 php 实现邮件发送功能

一、使用 PHPMailer 发送邮件 1、需要先安装 PHPMailer 库。你可以使用 Composer 来安装它&#xff1a; composer require phpmailer/phpmailer2、安装完成后&#xff0c;可以创建一个简单的 PHP 脚本来发送邮件。以下是一个示例脚本&#xff1a; <?php use PHPMailer\P…

RuoYi_Cloud本地搭建

1.进入若依官网获取git地址 &#xff08;1&#xff09;百度搜“若依官网进”入如下界面 &#xff08;2&#xff09;点击进入git&#xff0c;点克隆下载 &#xff08;3&#xff09;复制http地址 2.在git链接在idea本地打开 &#xff08;1&#xff09;返回桌面——右键&#xf…

金属波纹管

金属波纹管是一种外型规则的波浪样的管材&#xff0c;常用的金属波纹管有碳钢的&#xff0c;和不锈钢的&#xff0c;也有钢质衬塑的、铝质的等等。这种管材主要用于需要很小的弯曲半径非同心轴向传动&#xff0c;或者不规则转弯、伸缩&#xff0c;或者吸收管道的热变形等&#…

大数据面试题之HBase(1)

目录 介绍下HBase HBase优缺点 说下HBase原理 介绍下HBase架构 HBase读写数据流程 HBase的读写缓存 在删除HBase中的一个数据的时候&#xff0c;它什么时候真正的进行删除呢?当你进行删除操作&#xff0c;它是立马就把数据删除掉了吗? HBase中的二级索引 HBa…