二叉树的深度_十七:二叉树的最小深度

e0194e96442548738ae82913ab76bf29.png

二叉树的最小深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最短路径的长度为树的最小深度。

算法一

/** * @description 二叉树最小深度 * @param {*} root 二叉树 */function binaryTreeMinDepth(root) {    // 节点不存在时返回长度为0    if (!root) return 0    // 当节点存在时但是左右子节点不存在,返回长度为1    if (!root.left && !root.right) return 1    // 当左节点不存在,右节点存在,递归求出右节点深度,并加1    if (!root.left) return binaryTreeMinDepth(root.right) + 1    // 当右节点不存在,右节点存在,递归求出左节点深度,并加1    if (!root.right) return binaryTreeMinDepth(root.left) + 1    // 当左右节点都存在时 递归求出左右节点深度,毕竟求出左右节点深度最小值加1    return Math.min(binaryTreeMinDepth(root.right), binaryTreeMinDepth(root.left)) + 1}

算法二

/** * @description 二叉树最小深度 * @param {*} root 二叉树 */function binaryTreeMinDepth(root) {    // 根节点不存在时返回长度为0    if (!root) return 0    // 根节点存在深度为1    let depth = 1    // 声明一个队列默认存放根节点    const queue = [root]    while (queue.length) {        const len  = queue.length        // 遍历栈求出最小深度        for (let i = 0; i < len; i++) {            // 取出栈尾            const current = queue.shift()            // 如果遇到左右节点都不存在直接返回深度            if (!current.left && !current.right) return depth            // 如果左节点存在入栈            if (current.left)  queue.push(current.left)            // 如果右节点存在入栈            if (current.right)  queue.push(current.right)        }        // 深度加1        ++depth    }    // 如果找不到最小深度 则返回-1    return -1}

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

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

相关文章

苹果怎么付费购买内存_【苹果手机多长时间清理一次内存,怎么清理?】

一、微信缓存微信作为每天使用频率最多的软件&#xff0c;是需要重点清理的对象。操作&#xff1a;我—设置—通用—清理微信存储空间—查看微信存储空间&#xff0c;选择联系人进行清理。二、短信现在很少有人会用短信联系&#xff0c;一般都是一些垃圾广告&#xff0c;我们可…

发票管理软件_财务人员都在用的这款发票管理软件,真的值得购买么?

(1)电子凭证和纸质会计凭证具有同等效力&#xff1b;(2)报销管理也需要经办、审核、审批流程&#xff0c;且能防止重复入账&#xff1b;(3)以电子凭证纸质版入账留档保存的&#xff0c;必须同时保存电子档。以及重复繁琐的发票查验工作&#xff0c;把最近处于风口浪尖的电子发票…

自动点击器如何设置最快_铁粉技巧 | iPhone如何设置自动开关机,iPhone更改字体...

大家好我是小雷没有废话直奔主题今天让我们看下iPhone如何设置自动开关机首先需要了解的是&#xff0c;iPhone设备是不能设置自动开机的。那么如何每天自动关机呢&#xff1f;1&#xff0c;打开时钟点击计时器。2&#xff0c;点击计时结束时启动3&#xff0c;滑动页面点击停止播…

python contains类似函数_五步教会你用python爬虫神器PyQuery!(内含详细步骤和代码)...

前言&#xff1a;今天为大家带来的内容&#xff0c;是五步教会你用python爬虫神器PyQuery&#xff01;(内含详细步骤和代码)&#xff0c;在这里还是要啰嗦下&#xff0c;为了有更好的观赏性&#xff0c;大部分代码用图片的方式呈现出来&#xff01;喜欢的话不忘点赞关注不迷路哦…

uniapp开发实例github_跨端开发痛点?送你一款Vue最流行的跨端框架——uni-app

前言今天来聊一下前端必备技能——小程序开发。从最早发布的微信小程序&#xff0c;到后来的支付宝小程序、字节跳动小程序、百度小程序、QQ小程序&#xff0c;还有最近发布的360小程序&#xff0c;面对这么多套的代码&#xff0c;开发者该如何开发呢&#xff1f;当业务要求同时…

计算机怎么把单元格内容水平居中,win10系统下怎样让Word中的表格内容居中

Word是我们经常会使用到的一款文字处理软件&#xff0c;其具有非常强大的功能。那么&#xff0c;我们应该怎样使Word中的表格内容居中呢&#xff1f;接下来&#xff0c;小编就以 windows10正式版系统 为例&#xff0c;给大家分享具体操作方法。具体如下:1、首先在Word软件中准备…

双稳态电路的两个稳定状态是什么_从双稳态到双“更”稳态 ——叶芳伟课题组在拓扑光子学研究方向上取得新进展...

你拿起一个计算器&#xff0c;输入“26”&#xff0c;计算器会输出“8”&#xff1b;过了一会儿&#xff0c;你又在这个计算器上输入“26”&#xff0c;它依然会输出“8”。这种靠谱的计算器——对于同一个输入&#xff0c;它始终还给我们同一个输出——我们称之为线性计算器或…

【C++专题】static_cast, dynamic_cast, const_cast探讨

首先回顾一下C类型转换&#xff1a;C类型转换分为&#xff1a;隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”&#xff0c;包括以下几种情况&#xff1a;1) 算术转换(Arithmetic conversion) : 在混合类型的 算术表达式中, 最宽的数据类型成为目标转换…

安卓工控主板运行时会自动重启_工控主板在工业自动化中的应用

原标题&#xff1a;工控主板在工业自动化中的应用大家都知道随着科技的发展对于工控主板的用途和应用大大超出了工业自动化的范围&#xff0c;而对于本文联智通达小编将仅坚持工业自动化范围内的应用。首先跟随联智通达小编看一下制造以及工业PC的应用以及如何使该领域的工业自…

海量小文件存储

海量小文件存储 [转自:http://www.fuchaoqun.com/2009/04/deal-with-tons-of-small-files/] Web2.0网站&#xff0c;数据内容以几何级数增长&#xff0c;尤其是那些小文件&#xff0c;几K&#xff5e;几百K不等&#xff0c;数量巨多&#xff0c;传统的文件系统处理起来很是吃力…

diff算法_vue源码解读 diff算法

导语 最近碰到部分业务场景&#xff0c;代码逻辑需要了解"数组变更后&#xff0c;具体变更了哪一些元素&#xff0c;以及变更的位置.."。于是仔细研究并覆写了一遍针对数组变化的diff算法&#xff0c;在这里做下diff算法的逻辑分享&&源码解读一.介绍前的准备…

Linux驱动模块编译进内核中

BQ27501驱动编译进内核 一、 驱动程序编译进内核的步骤 在 linux 内核中增加程序需要完成以下三项工作&#xff1a; 1. 将编写的源代码复制到 Linux 内核源代码的相应目录&#xff1b; 2. 在目录的 Kconfig 文件中增加新源代码对应项目的编译配置选项&#xff1b; 3. 在…

黑群晖二合一安装不了套件_玩PT还是得安装transmission,星际蜗牛安装黑群晖制作家用NAS...

原文作者&#xff1a;pt老萌新To小白&#xff1a;黑群晖docker安装PT神器transmission——星际蜗牛安装黑群晖制作家用NAS的折腾日记写在前面&#xff1a;里面的技术方法不是我原创的&#xff0c;都是网上找的&#xff0c;侵删。折腾的过程记录是原创的(好像没啥原创的了)&…

spring boot web项目_阿里技术专家带你使用Spring框架快速搭建Web工程项目

点击上方 "程序员小乐"关注, 星标或置顶一起成长 第一时间与你相约 每日英文 We all have a past. It’s how you deal with it. 每个人都有过去&#xff0c;只是取决于你怎么去处理。 每日掏心话 人不都是这样吗&#xff0c;安慰别人的时候头头是道&#xff0c;自己…

git 代码回滚_能提交到远程的Git回滚

很多情况下我们需要回滚代码&#xff0c;最容易想到的就是git reset。但是git reset有个弱点&#xff0c;它是一个彻底的回滚&#xff0c;不能再提交给远程了&#xff0c;因为在提交记录里回滚点之后的记录都不见了。做一下试验&#xff0c;一个文件我们提交了三次之后回滚#往前…

Mysql数据库的几大优势

为什么开源社区买mysql的帐&#xff0c; MySQL数据库的吸引开源社区的几大特质: 客户为什么会考虑购买MySQL 企业版Enterprise Edition : 转载于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2968208.html

c语言e怎么表示_来测测!这11个C语言入门基础知识你都掌握了吗?

文章字数&#xff1a;8400 干货指数&#xff1a;⭐⭐⭐⭐⭐C语言程序的结构认识用一个简单的c程序例子&#xff0c;介绍c语言的基本构成、格式、以及良好的书写风格&#xff0c;使小伙伴对c语言有个初步认识。例1&#xff1a;计算两个整数之和的c程序&#xff1a;#include main…

Oracle甲骨文8.7亿美元高价收购Eloqua

北京&#xff0c;2012年12月20日—— 甲骨文今天宣布&#xff0c;已与领先的云营销自动化和收入绩效管理软件供应商Eloqua公司&#xff08;NASDAQ代码&#xff1a;ELOQ&#xff09;达成收购协议&#xff0c;收购价为每股23.50美元&#xff0c;总额约为8.71亿美元。Eloqua的现…

hp服务器如何ghost系统,惠普(HP)电脑安装不了GHOST系统的解决办法

你还在为不知道惠普(HP)电脑安装不了GHOST系统的解决办法而不知所措么?下面来是学习啦小编为大家收集的惠普(HP)电脑安装不了GHOST系统的解决办法&#xff0c;欢迎大家阅读&#xff1a;惠普(HP)电脑安装不了GHOST系统的解决办法1、按F10进入CMOS2、找到电源设置项(Power Manag…

azm335x 串口配置

任务: 配置uart3和uart5 UART3 UART5 配置uart3 1. 修改mmu33xx.c _AM33XX_MUXENTRY(MII1_RXD3, 0, "mii1_rxd3", NULL, "rgmii1_rd3", "mmc0_dat5", "mmc1_dat2", NULL, "mcasp0_axr0", "gpio2_…