二叉树的最小深度

一、需求

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

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

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

输入:root = [3,9,20,null,null,15,7]输出:2

二、BFS法

2.1  思路分析

  1. 该思路根据求二叉树的最大深度:https://blog.csdn.net/Sruggle/article/details/110429246而来;
  2. 利用队列保存二叉树的每一行,一行一行的进行;

2.2  代码实现

class Solution {    public int minDepth(TreeNode root) {        if(root == null) return 0;        List<TreeNode> queue = new LinkedList<>();        queue.add(root);        int res = 0;        while(queue.size() != 0) {            res  ;            List<TreeNode> tmp = new LinkedList<>();            for(TreeNode node : queue) {                if(node.left == null && node.right == null) return res;                if(node.left != null) tmp.add(node.left);                if(node.right != null) tmp.add(node.right);            }            queue = tmp;        }        return res;            }}

2.3  复杂度分析

  • 时间复杂度为O(N),最坏情况下,二叉树为满二叉树时,需要遍历所有的节点;
  • 空间复杂度为O(N),最坏情况下,二叉树为满二叉树时,队列需要同时存储N/2的节点;

三、DFS法

3.1  思路分析

  1. 思路与求二叉树的最大深度类似,多加了两个判断,用来排除左子树或右子树为空的情况;

3.2  代码实现

class Solution {    public int minDepth(TreeNode root) {        if(root == null) return 0;        //左、右子树深度        int left = minDepth(root.left);        int right = minDepth(root.right);        //左(右)子树为空,深度为右(左)子树深度 当前节点深度1        if(left == 0) return right   1;        if(right == 0) return left   1;        //左、右子树不为空,深度为左、右子树深度较小者 当前节点深度1        return Math.min(left, right)   1;    }}

3.3  复杂度分析

  • 时间复杂度为O(N),递归需要遍历二叉树的所有节点;
  • 空间复杂度为O(N),递归的深度最多可达N;

来源:https://www.icode9.com/content-4-837951.html

(0)

相关推荐

  • ​LeetCode刷题实战99:恢复二叉搜索树

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  • (1条消息) 万字长文!二叉树入门和刷题看这篇就够了!

    今天是小浩算法 "365刷题计划" 二叉树入门 - 整合篇.本篇作为入门整合篇,已经砍去难度较大的知识点,所有列出的内容,均为必须掌握.因为很长,写下目录: 二叉树是啥 二叉树的最 ...

  • 这是世界上最小的 3D 深度摄像头,移动 VR 实现体感交互近了

    这么多的 VR 体感交互技术中,很多研究者都认为基于计算机视觉原理的动作捕捉技术是最能代表未来的,这是一种允许用户无需穿戴设备便能与虚拟世界交互的技术,其约束性小,更接近真实的体感交互体验. 采用这种 ...

  • 太闲,会毁掉一个正常的人(深度好文)

    闲,是福气. 太闲,就不一定是福气,指不定是灾难. 空闲久了,才会知道,闲的发慌多可怕,闲的无聊多遭罪,闲的寂寞多空虚. 因为太闲,就会有很多的时间去胡思乱想,去患得患失,去纠结不清,在剪不断,理还乱 ...

  • IBM称造出最小最强芯片

    IBM称造出最小最强芯片

  • 热点板块运行规律深度揭秘

    ■文丨老散论市 最近有学员股友总是给我留言,说老散老师,最近独角兽概念这么热,感觉每天股市都有这么多热点板块,这个板块的运行有没有什么规律,他特别想学习板块运行这块的内容,我就整体给他语音解析了下.今 ...

  • 面积最小的国家梵蒂冈是如何从意大利独立出来的?

    本 文 约 3900 字 阅 读 需 要 12 min 作为世界上面积最小的国家以及"国中之国",梵蒂冈是有一定存在感的.但是当你翻开欧洲地图,看到梵蒂冈.圣马力诺这样存在于某国家 ...

  • 和珅虽贪,但他的能力和处世哲学让人钦佩(深度好文)

    分享至 关于和珅,正史上的记载很多,野史上的记载就更多了,毕竟作为满清第一大贪官,被人惟妙惟肖,绘声绘色描述和流传是必不可少的一件事.然而是什么造就了他的金钱观和为官之道呢? 我们熟知的电视剧< ...

  • 中医揭秘,疾病的根源(深度好文)

    导读:"上工治未病",中医的养生之道,讲究道法自然,吃喝拉撒睡,事事皆学问,攸关健康所在,不可不慎,本文通过讲述能量与"升降"的规律,揭露疾病的真相,治病的最高 ...

  • 古训: 愚者互踩, 智者互抬! (深度好文)

    点击加载图片 <左传>中讲道:"辅车相依,唇亡齿寒." 人生在世,谁都不是独角戏,每个人之间相互连接,彼此依存. 聪明的人,彼此帮助,道路会越走越宽,而愚笨的人,互相拆 ...

  • 七个字,写尽一生!(深度好文)

    药到,病必除:心宽,病自退! 第一个字:命 生命,是活着的根本, 生命,是最好的宝贝. 人若失去了生命, 化为云烟,深埋土中, 世间一切无法享用. 只有生命还在,身体无恙, 才能平平安安活在世上. 得 ...