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

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,一经查实,立即删除!

相关文章

reactor设计模式 1

Reactor这个词译成汉语还真没有什么合适的&#xff0c;很多地方叫反应器模式&#xff0c;但更多好像就直接叫reactor模式了&#xff0c;其实我觉着叫应答者模式更好理解一些。通过了解&#xff0c;这个模式更像一个侍卫&#xff0c;一直在等待你的召唤&#xff0c;或者叫召唤兽…

LinkedBlockingQueue应用实例

并发库中的BlockingQueue是一个比较好玩的类&#xff0c;顾名思义&#xff0c;就是阻塞队列。该类主要提供了两个方法put()和take()&#xff0c;前者将一个对象放到队列中&#xff0c;如果队列已经满了&#xff0c;就等待直到有空闲节点&#xff1b;后者从head取一个对象&#…

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

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

用计算机计算2的31次方,2的31次方,用什么方法可以最快算出来呢

请告诉我过程和怎么算出来的好吗? 2-2的2次方....-2的19次方 2的20次方2 - 2^2 - 2^3 - 2^4 - 。。。。 -2^19 2^202 2^20 - ( 2^2 2^3 2^4 。。。。 2^19)学过等比数列吗&#xff0c;学过就用公式Sna1(1-q^n)/(1/q)(a1-q*an)/(1-q)2^2 2^3 2^4 。 。。。 2^19 2^2(1-2^18)/(…

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

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

SDL以及扩展库的交叉编译过程简介

下面我介绍一下SDL以及SDL的扩展库在arm11上的交叉编译 在这里我将SDL 交叉编译的相关都安装在/opt/arm目录下 相关简介&#xff1a; SDL官方网站 http://www.libsdl.org/ SDL编译移植(Up-teach6410平台) 系统环境&#xff1a;linux 移植环境&#xff1a;arm11 编译工具链&…

Ref and Out

C#中ref和out的区别&#xff1a; ref 参数需初始化&#xff0c;而out并无此要求。out 参数在调用者返回之前必须有值&#xff08;调用的函数在运行过程中确定此参数的值&#xff09;。而ref参数在调用者调用之前必须有值&#xff08;由调用者设定&#xff09;。int x; Foo(out …

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

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

中国大学慕课计算机专业导论,2015秋计算机专业导论(大连大学)

本课程是计算机科学与技术学科的第一门课程&#xff0c;目的使学生认识和了解计算机科学与技术学科&#xff0c;了解计算机科学与技术学科的基本思维、问题求解框架及典型的方法论&#xff0c;了解计算机科学与技术学科的研究对象及科学技术体系&#xff0c;了解计算机科学与技…

编译zlib库

$ tar zxvf zlib-1.2.3.tar.gz $ cd zlib-1.2.3$ ./configure --prefix/usr/local/arm/3.4.6/arm-linux --shared $ vim MakefileCCarm-linux-gccLDSHAREDarm-linux-ld -shared$ make all$ make install注意&#xff1a;这里是安装在/usr/local/arm/3.4.6/arm-linux目录下由于…

[Buzz.Today]2013.03.14

# Google将砍掉Google Reader 最近一两年养成了每天blog的习惯&#xff0c;桌面上用Feedeamon&#xff0c;iPad上则用Reeder&#xff0c;而二者均为与Google Reader同步&#xff0c;Google这一手让我心痛哦。 [后记] Google Reader的猝死给我们的启示&#xff1a;互联网无法永远…

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

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

计算机应用基础 第三版 实验报告,计算机应用基础实验报告(windows).doc

计算机应用基础实验报告(windows)实 验 报 告计算机应用基础实验报告姓名 于航 班级 0531132 学 实验日期2013.09.13课程名称 计算机应用基础 指导教师 洪菁 成绩实验名称&#xff1a;windows的基本操作实验目的&#xff1a;掌握桌面主题的设置掌握任务栏的使用和设置掌握任务切…

python 跳一跳辅助_微信跳一跳辅助自动跳Python

#-*- coding: utf-8 -*-""" 思路 核心&#xff1a;每次落稳之后截图&#xff0c;根据截图算出棋子的坐标和下一个块顶面的中点坐标&#xff0c;根据两个点的距离乘以一个时间系数获得长按的时间识别棋子&#xff1a;靠棋子的颜色来识别位置&#xff0c;通过截图…

asterisk for mipsel

任务&#xff1a;将asterisk1.8.24.0移植到rt5350上面 交叉工具链&#xff1a;mipsel-linux(3.4.2) 1. 配置asterisk&#xff0c;执行./configure --hostmipsel-linux 找不到termcap和libxml2&#xff0c;分别对他们交叉编译&#xff0c;然后将生成的库拷贝到交叉工具链的lib…

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;它始终还给我们同一个输出——我们称之为线性计算器或…

Webots实现大疆Mavic2pro无人机定点飞行

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、将无人机当成一个对象1.1定义无人机相关属性1.2定义用于控制无人机运动的代码1.3主函数实现无人机的点位固定和飞行检测 二、用键盘控制测试代码三、效果展…

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

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