111.二叉树的最小深度

给定一个二叉树,找出其最小深度。

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

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

示例:

给定二叉树 [3,9,20,null,null,15,7],

111.二叉树的最小深度1

返回它的最小深度 2.

思路:

后序遍历(左右中)

递归

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

左右孩子都是None的节点是叶子结点。

先确定递归的终止条件:遇到空节点,此时高度为0,return 0

确定递归的单层逻辑:

【左】获取 左子树的最小高度

【右】获取 右子树的最小高度

【中】【注意这里和最大高度不同点:最大高度就是取左右子树的最大值,但是这里不能这样,如果左边为None,右边有值,那么就 return 1+右边子树的最小高度

同理,如果左子树不为空,右子树为空,那么return 1+左子树最小高度

剩下一种情况:左右子树都不为空,return 1+min(左子树最小高度,右子树最小高度)

最后 return result】

代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def minDepth(self, root: Optional[TreeNode]) -> int:return self.getDepth(root)def getDepth(self, node):if node is None:return 0leftDepth = self.getDepth(node.left)rightDepth = self.getDepth(node.right)if node.left is None and node.right is not None:return 1 + rightDepthif node.left is not None and node.right is None:return 1 + leftDepthresult = 1 + min(leftDepth, rightDepth)return result

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

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

相关文章

深入理解 Nginx Concat 模块:示例、安装和使用方法

Nginx 是一个高性能的开源 Web 服务器,广泛用于构建可靠的 Web 应用程序和服务。其中的 Concat 模块为用户提供了在服务器端快速合并和传输多个文件的能力,从而提高了网页加载速度和性能。在本文中,我们将深入探讨 Nginx Concat 模块的安装、示例以及使用场景。 什么是 Ngi…

【设计模式深度剖析】【5】【结构型】【桥接模式】| 以电视和遥控器为例加深理解

👈️上一篇:组合模式 设计模式-专栏👈️ 目 录 桥接模式(Bridge Pattern)定义英文原话是:直译理解 4个角色UML类图代码示例 应用优点缺点使用场景 示例解析:电视和遥控器UML类图 桥接模式(Bridge Pattern) 定义 英文原话是&am…

band对应频段列表(2G、4G、5G)

5G BAND对应频段 n1:2.1G n3:1.8 n5:850 n8:900 n28:700 n41:2.6G n77:3.3G n78:3.5G n79:4.9G n257、258、260:毫米波频段(26G,28G,39G) 4G BAND对应频段 Band1:2.1G–上行1920-1980 MHz,下行2110-2170 MHz Band3:1.8G–上行1710-1785 MH…

CC工具箱使用指南:【淹没区分析(BHM)】

一、简介 群友定制工具。 这个工具适用面比较小。 工具的应用场景如下: 提供一个淹没区范围,类型是面要素。统计这个范围内的一些线、面要素的面积或长度。 给定的几个数据有:耕地、永久基本农田、房台、道路(线)…

基于Docker搭建属于你的CC++集成编译环境

常常,我会幻想着拥有一个随时可以携带、随时可以使用的开发环境,那该是多么美好的事情。 在工作中,编译环境的复杂性常常让我头疼不已。稍有不慎,删除了一些关键文件,整个编译链就会瞬间崩溃。更糟糕的是,…

【Go语言入门学习笔记】Part6.包和两个几乎用不到的小Tip

一、前言 这个文章简单了写了一下包、init函数、匿名函数。 二、学习代码 1.包 package packTestimport "fmt"func init() { //如果主函数引用了这个包,主函数执行的时候会先执行包的initfmt.Println("hello world") }func Add(num1 int, num…

如何保养和维护气膜体育馆—轻空间

随着经济的飞速发展,气膜体育馆以其新颖的外观、优美的造型、节能环保的特点,迅速进入体育市场。然而,对于气膜体育馆的维护和保养是不容忽视的问题,必须引起重视。下面我们将详细介绍气膜体育馆的维护需要从哪些方面着手。 一、保…

公路行业交通工程乙级资质的动态考核要点

技术人员保持与更新: 核查技术人员的在职状态、专业资格证书的有效性,以及新增或离职技术人员的情况,确保关键岗位人员的稳定性和资质要求的持续达标。评估技术人员的专业发展,包括继续教育、培训和参与专业活动的情况&#xff0c…

【电路笔记】-状态可变滤波器

状态可变滤波器 文章目录 状态可变滤波器1、概述2、**状态可变滤波器电路**3、状态可变滤波器示例4、陷波滤波器设计5、总结状态可变滤波器是一种多反馈滤波器电路,可以从同一单个有源滤波器设计中同时产生所有三种滤波器响应:低通、高通和带通。 1、概述 状态可变滤波器使用…

基于Java+SpringBoot+Mybaties-plus+Vue+elememt + uniapp 新闻资讯 的设计与实现

一.项目介绍 本系统分为 后端 和 小程序端 后端:点击登录按钮 设置个人中心、 管理员账号数据维护、 基础数据维护、 短视频信息维护(包括查看短视频留言、短视频收藏)、 论坛维护(增删改查帖子信息,包括查…

Rabbit MQ学习之《基础概念》

Message Queue 1 什么是MQ MQ(message queue),本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message而已,同时是一种跨进程的通信机制,用于上下游传递消息。 在互联网架构中,MQ 是一种非常常见的…

深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)

力扣166题:分数到小数 在本篇文章中,我们将详细解读力扣第166题“分数到小数”。通过学习本篇文章,读者将掌握如何使用多种方法来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释和ASCII图解&am…

钡铼技术BL205模块在智能制造产线的灵活配置与优化

钡铼技术的OPC UA耦合器BL205模块在智能制造产线中的灵活配置与优化是当今工业领域中的一个关键议题。随着工业4.0和数字化转型的不断推进,生产线的灵活性和智能化程度成为了企业追求的目标。在这一背景下,BL205模块以其分布式、可插拔、结构紧凑、可编程…

【Python快速上手(三十三)】- Python operator 模块

目录 Python快速上手(三十三)- Python operator 模块Python operator 模块详解1. 模块简介2. 算术运算符函数3. 比较运算符函数4. 位运算符函数5. 序列操作函数6. 方法调用函数7. 操作函数对象8. 实际应用案例9. 小结 Python快速上手(三十三&…

Java基础入门day57

day57 JSP、Servlet&#xff0c;Java bean和JDBC整合项目 index.jsp页面 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <!DOCTYPE html> <html> <head><title>JSP - Hello World</title> …

CSS 媒体查询 响应式开发

介绍 媒体查询&#xff08;Media Queries&#xff09;是CSS3的技术&#xff0c;可以根据设备的特性&#xff08;如屏幕宽度、高度、方向等&#xff09;来应用不同的样式规则。媒体查询可以使网页在不同设备上呈现不同的样式&#xff0c;以实现响应式设计。 语法 media scree…

Pytorch中的torch.save()文件保存格式探索以及mmdetection加载预训练模型参数对不齐和收到意外参数报错解决方案

使用mmdetection时遇到的问题比较多&#xff0c;首先要对自己要使用的预训练模型有一定的了解&#xff0c;并且懂得使用各种分类模型时不同的模型不同任务执行阶段需要参数上的对其。&#xff08;比如mask-rcnn和它的三个头之间的参数&#xff09;。 首先&#xff0c;谈谈torc…

什么是声明式事务管理?

声明式事务管理是Spring提供的一种事务管理机制&#xff0c;它允许开发者通过声明的方式&#xff0c;而不是通过编程的方式&#xff0c;来管理事务的边界和行为。在声明式事务管理中&#xff0c;你可以通过注解或XML配置来指定方法或类上的事务属性和行为。 在Spring中&#x…

Spring Boot集成六大常用中间件,附集成源码,亲测有效

目录 万字论文&#xff0c;从0到1&#xff0c;只需1小时获取途径1、Spring Boot如何集成Spring Data JPA&#xff1f;2、Spring Boot如何集成Spring Security&#xff1f;3、Spring Boot如何集成Redis&#xff1f;4、Spring Boot如何集成RabbitMQ&#xff1f;5、Spring Boot如何…

JavaEE(入门)

JavaEE &#xff08;详细注释版&#xff09; 1. 入门基础 1.1 JavaEE简介 JavaEE&#xff08;Java Platform, Enterprise Edition&#xff09;是由Sun Microsystems推出的一套标准&#xff0c;现由Oracle维护。JavaEE平台主要用于开发和运行企业级应用程序&#xff0c;具有高…