代码随想录-49-111.二叉树的最小深度

news2024/9/24 21:27:05

目录

  • 前言
    • 题目
  • 1.层序迭代
      • 思路
    • 2. 本题思路分析:
    • 3. 算法实现
    • 4. pop函数的算法复杂度
    • 5. 算法坑点

前言

在本科毕设结束后,我开始刷卡哥的“代码随想录”,每天一节。自己的总结笔记均会放在“算法刷题-代码随想录”该专栏下。
代码随想录此题链接

题目

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

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

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

示例:

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

在这里插入图片描述

返回它的最大深度 2。

1.层序迭代

思路

  • 层序遍历所有节点,设置一个记录层数int类型的参数,当遍历一层,此参数+1。
  • 当发现遍历时存在左右孩子均为空的节点(叶子节点),说明当前层就是最小深度
  • 二叉树层序遍历实现思路(使用一个队列(ArrayDeque实现)),两层循环,第一层(最外面那层)负责判断层级有没有遍历完(如果ArrayDeque为空则说明已经遍历完毕),第二层负责将本层的节点遍历完(提前申明一个size值用来记录本层的节点数,只遍历本层的这些节点),并且将下一层节点加入到队列中。(判断当前节点的左右孩子是否为空,若不为空则加入到ArrayDeque中)

2. 本题思路分析:

本题使用层序迭代

3. 算法实现

  • 代码:
    层序迭代:
public int minDepth(TreeNode root) {
   if(root == null){
       return 0;
   }
   Deque<TreeNode> nodes = new ArrayDeque<>();
   nodes.offer(root);
   int minDepth = 0;
   while(!nodes.isEmpty()){
       int size = nodes.size();
       for(int i = 0;i < size;i++){
           TreeNode cur = nodes.poll();
           if(cur.left == null && cur.right == null){
               return minDepth + 1;
           }
           if(cur.left != null){
               nodes.offer(cur.left);
           }
           if(cur.right != null){
               nodes.offer(cur.right);
           }
       }
       minDepth++;
   }
   return minDepth;
}

4. pop函数的算法复杂度

n为总结点数
时间复杂度:O(n)
空间复杂度:O(n)

5. 算法坑点

暂无

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

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

相关文章

从功能测试进阶自动化测试涨薪10k,只用了1个月...

在开始正文前&#xff0c;先给大家一碗鸡汤&#xff1a;“你要坚信时间是不会辜负每一个努力付出的人&#xff0c;当你拥有一万次的训练和沉淀后&#xff0c;生活也会还你诗和远方。” 现在有很多人经常被“想要快速看到好的结果”的“快”思维裹挟着&#xff0c;稍微在短时间…

循环删除 List 中的元素

引用&#xff1a;https://mp.weixin.qq.com/s/j3k70kB3KPGO5ZKpOxJ4Pw 问题 比如有以下这个 List&#xff1a; public List<String> initList Arrays.asList("张三", "李四", "周一", "刘四", "李强", "李白&…

【微电网_储能】基于启发式状态机策略和线性程序策略优化方法的微电网中的储能研究【给定系统约束和定价的情况下】(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

Share Creators确认参展GDC 2023,致力于解决游戏开发者数字资产管理难题

全球游戏行业年度盛会“2023 游戏开发者大会”&#xff08;Game Developers Conference&#xff0c;简称 GDC&#xff09;&#xff0c;是全球规模最大的游戏开发者盛会&#xff0c;将于 2023 年 3 月 20 至 24 日于美国旧金山举行。自 1988 年首次举办以来&#xff0c;本届 GDC…

Linux网络基础

目录 一.计算机网络背景 二、认识协议 三.OSI七层模型 四.TCP/IP五层(或四层)模型 五.网络传输基本流程 六.数据包封装和分用 七.网络中的地址管理 一.计算机网络背景 网络本质是一个层状结构&#xff0c;同时也是操作系统的一部分 网络发展 独立模式: 计算机之间相互…

学术速运|利用机器学习进行有机反应机理分类

​题目&#xff1a;Organic reaction mechanism classification using machine learning 文献来源: Nature | Vol 613 | 26 January 2023 | 691 代码&#xff1a;https://doi.org/10.48420/16965271 简介&#xff1a;对催化有机反应的机理的理解,有助于设计新的催化剂、反应…

微服务一 实用篇 - Docker安装

《微服务一 实用篇 - Docker安装》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - Docker安装》《微服务一 实用篇 - Docker安装》0.安装Docker1.CentOS安装Docker1.1.卸载&#xff08;可选&#xff09;1.2.安装docker1.3.启动docker…

聚观早报|文心一言将于3月16日发布;字节Pico调低VR设备销售目标

今日要闻&#xff1a;百度「文心一言」将于3月16日发布&#xff1b;字节Pico调低VR设备销售目标&#xff1b;iPhone16Pro将采用屏下Face ID&#xff1b;京东低调重试前置仓卖菜业务&#xff1b;名创优品上季度净利增八成 百度「文心一言」将于3月16日发布 百度计划于 3 月 16 日…

DAGA : 基于生成方法的低资源标记任务数据增强 精读笔记

DAGA : 基于生成方法的低资源标记任务数据增强 精读笔记 文章目录DAGA : 基于生成方法的低资源标记任务数据增强 精读笔记1 Introduction2 BackgroundName Entity RecognitionPart-of-Speech (POS) TaggingTarget Based Sentiment Analysis3 Proposed Method3.1 Labeled Senten…

金三银四面试必备,“全新”突击真题宝典,阿里腾讯字节都稳了

前言招聘旺季就到了&#xff0c;不知道大家是否准备好了&#xff0c;面对金三银四的招聘旺季&#xff0c;如果没有精心准备那笔者认为那是对自己不负责任&#xff1b;就我们Java程序员来说&#xff0c;多数的公司总体上面试都是以自我介绍项目介绍项目细节/难点提问基础知识点考…

长短记忆神经网络(LSTM,Long Short-Term Memory)

长短记忆神经网络定义 长短记忆神经网络&#xff08;Long-short term memory, LSTM&#xff09;是一种特殊的RNN结构。该神经网络可以有效保留历史信息&#xff0c;实现对文本的长期依赖信息进行学习。 关键问题&#xff1a;控制长期状态信息 解决方法&#xff1a;门控开关 门的…

在windows安装python3.11同时进行一个数据的练习

安装包百度网盘如下&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1l9H1GWP64LOxLaXXLie2uA?pwd6666 提取码&#xff1a;6666 1.我们选择自定义安装 2.当我们点了自定义安装后就直接next 3.修改路径&#xff0c;之后点击安装(install) 4.安装完成&#xff0c;进行…

南卡Neo骨传导运动耳机发布,重塑骨传导耳机舒适听感新体验!

近日&#xff0c;在骨传导耳机领域中最专业的南卡发布了今年全新系列——NEO&#xff0c;如果说南卡Runner Pro4的音质是偏向于节奏性&#xff0c;那么这款南卡NEO是更加偏向于沉稳性节奏&#xff0c;能够轻松征服轻运动场景&#xff0c;此系列在舒适度以及音质上&#xff0c;更…

3.3 利用群晖:群辉与PC电脑直连,实现万兆/2.5G速度文件互传(解决 直连后 网络/外网/网页 访问变慢,直连后群辉无网络 cloud sync无网络)

为黑群晖和电脑装备了万兆X540 T2网卡&#xff0c;为实现万兆速度的文件互传&#xff0c;决定将黑群晖直连PC&#xff0c;其需要注意的点有以下三点&#xff1a;修改PC和群辉的IPv4&#xff1a;为实现固定IP访问群辉&#xff0c;这里建议修改PC和群辉均为固定IP。1&#xff09;…

JS#3 事件监听

一. 简介事件:HTML事件是发生在HTML元素上的"事情"例如:按钮被点击鼠标移动到元素之上按下键盘按键事件监听: JavaScript 可以在事件被侦测到时执行代码二. 事件绑定事件绑定有两种方式方式一:通过HTML标签中的事件属性进行绑定方式二:通过DOM元素属性绑定代码<!D…

2.4 群辉驱动:多网口,系统网络只能识别两个网口 解决教程

所需工具下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1CMLl6waOuW-Ys2gKZx7Jgg?pwdchct提取码&#xff1a;chct安装的黑群晖华硕z490i主板自带一个i225 2.5G&#xff0c;后又插了一个4口8125B四口网卡&#xff0c;发现控制面板->网络->网络界面 只识别了其…

kafka入门到实战一(认识kafka)

kafka入门到实战一&#xff08;认识kafka&#xff09; 本次kafka的学习打算从三方面开始 认识kafka&#xff0c;掌握基础知识搭建kafka&#xff0c;为使用kafka创建条件使用kafka&#xff0c;基本的使用和解决顺序消费等问题 kafka消费流程 kafka大体消费流程&#xff1a;生…

webpack优化环境配置和webpack配置详解

目录 4 webpack优化环境配置 17 优化配置介绍 18 HMR 19 source-map 20 oneOf 21 缓存 22 tree shaking 23 code split (代码分割) 24 lazy loading 25 PWA 26 多进程打包 27 externals 28 dll 5 webpack配置详解 29 entry 30 output 31 module 32 resolve …

axios的二次封装

方式一&#xff1a;将axios单独分装到某个配置文件中import axios from axios; const axiosApi axios.create({baseURL:http://127.0.0.1:3000,timeout:3000 }) export default axiosApi在组件中使用:import $http from axios配置文件的地址 $http.get(/student/test).then(re…

数仓之拉链表分区设计

目录 适用场景 优缺点 案例 适用场景 当数据量较大&#xff0c;表中某些字段有变化&#xff0c;但变化频率不是很高&#xff0c;而业务需求又需要统计这种变化状态&#xff0c;如果每天存储一份全量数据&#xff0c;不仅浪费存储空间&#xff0c;且不便于业务统计&#xff1b…