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中的上下文管理器
Jun 28 Python
Python3安装Pymongo详细步骤
May 26 Python
python生成词云的实现方法(推荐)
Jun 13 Python
python使用sqlite3时游标使用方法
Mar 13 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
python flask web服务实现更换默认端口和IP的方法
Jul 26 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
Python @property装饰器原理解析
Jan 22 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
python 实现弹球游戏的示例代码
Nov 17 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
PHP页面间传递参数实例代码
2008/06/05 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
jquery radio 操作代码
2011/03/16 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
Python实现将文本生成二维码的方法示例
2017/07/18 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
django将数组传递给前台模板的方法
2019/08/06 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
python编写简单端口扫描器
2019/09/04 Python
简单了解Python write writelines区别
2020/02/27 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
机械设计及其自动化专业推荐信
2013/10/31 职场文书
抵押贷款承诺书
2014/05/30 职场文书
美食节目策划方案
2014/05/31 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
讲文明倡议书
2015/04/29 职场文书
安全温馨提示语大全
2015/07/14 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书