Python实现二叉树的最小深度的两种方法


Posted in Python onSeptember 30, 2019

找到给定二叉树的最小深度

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

注意:叶子节点没有子树

Example:

Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
return its minimum depth = 2.

1:算法遍历二叉树每一层,一旦发现某层的某个结点无子树,就返回该层的深度,这个深度就是该二叉树的最小深度

def minDepth(self, root):
    """
    :type root: TreeNode
    :rtype: int
    """
    if not root:
      return 0
    curLevelNodeList = [root]
    minLen = 1
    while curLevelNodeList is not []:
      tempNodeList = []
      for node in curLevelNodeList:
        if not node.left and not node.right:
          return minLen
        if node.left is not None:
          tempNodeList.append(node.left)
        if node.right is not None:
          tempNodeList.append(node.right)
      curLevelNodeList = tempNodeList
      minLen += 1
    return minLen

2:用递归解决该题和"二叉树的最大深度"略有不同。主要区别在于对“结点只存在一棵子树”这种情况的处理,在这种情况下最小深度存在的路径肯定包括该棵子树上的结点

def minDepth(self, root):
    """
    :type root: TreeNode
    :rtype: int
    """
    if not root:
      return 0
    if not root.left and root.right is not None:
      return self.minDepth(root.right)+1
    if root.left is not None and not root.right:
      return self.minDepth(root.left)+1
    left = self.minDepth(root.left)+1
    right = self.minDepth(root.right)+1
    return min(left,right)

算法题来自:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/description/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入解析Python中的WSGI接口
May 11 Python
python dict.get()和dict['key']的区别详解
Jun 30 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
浅析Python四种数据类型
Sep 26 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
解决Python内层for循环如何break出外层的循环的问题
Jun 24 Python
python实现画出e指数函数的图像
Nov 21 Python
python 通过视频url获取视频的宽高方式
Dec 10 Python
python range实例用法分享
Feb 06 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
python打开使用的方法
Sep 30 #Python
python 字典有序并写入json文件过程解析
Sep 30 #Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 #Python
Python3 翻转二叉树的实现
Sep 30 #Python
ubuntu上安装python的实例方法
Sep 30 #Python
python多进程并行代码实例
Sep 30 #Python
Python3实现二叉树的最大深度
Sep 30 #Python
You might like
linux命令之调试工具strace的深入分析
2013/06/03 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
javascript Base类 包含基本的方法
2009/07/22 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
一个简单的jQuery计算器实现了连续计算功能
2014/07/21 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Django model class Meta原理解析
2020/11/14 Python
python制作微博图片爬取工具
2021/01/16 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
文明礼仪事迹材料
2014/01/09 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
商务宴会祝酒词
2015/08/11 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android