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 json encode datetime类型
Dec 28 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
python模块之paramiko实例代码
Jan 31 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
Python运行不显示DOS窗口的解决方法
Oct 22 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
Python面向对象总结及类与正则表达式详解
Apr 18 Python
python之array赋值技巧分享
Nov 28 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
基于python实现上传文件到OSS代码实例
May 09 Python
keras绘制acc和loss曲线图实例
Jun 15 Python
Python趣味入门教程之循环语句while
Aug 26 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
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
点击广告后才能获得下载地址
2006/10/26 Javascript
jquery select操作的日期联动实现代码
2009/12/06 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
jquery获取div距离窗口和父级dv的距离示例
2013/10/10 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
layer弹出层框架alert与msg详解
2017/03/14 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
了解JavaScript中let语句
2019/05/30 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
在Python中使用模块的教程
2015/04/27 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python画图高斯分布的示例
2019/07/10 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python实现canny边缘检测
2020/09/14 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
python实现简单的学生管理系统
2021/02/22 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
圣诞节红领巾广播稿
2014/02/03 职场文书
大学军训感言400字
2014/03/11 职场文书
求职信模板
2014/05/23 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
对讲机知识
2022/04/07 无线电
Python实现聚类K-means算法详解
2022/07/15 Python