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使用marshal模块序列化实例
Sep 25 Python
Python实现命令行通讯录实例教程
Aug 18 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
通过python顺序修改文件名字的方法
Jul 11 Python
python导入模块交叉引用的方法
Jan 19 Python
Python 使用元类type创建类对象常见应用详解
Oct 17 Python
VSCode中自动为Python文件添加头部注释
Nov 14 Python
django迁移文件migrations的实现
Mar 31 Python
Python3爬虫中Ajax的用法
Jul 10 Python
Kmeans均值聚类算法原理以及Python如何实现
Sep 26 Python
如何利用python正则表达式匹配版本信息
Dec 09 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 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
第六节--访问属性和方法
2006/11/16 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
Python排序算法实例代码
2017/08/10 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
大学生毕业求职自荐书范文
2014/02/04 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
后勤管理员岗位职责
2014/08/27 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
政审证明范文
2015/06/19 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
nginx请求限制配置方法
2021/07/09 Servers
alibaba seata服务端具体实现
2022/02/24 Java/Android
Python IO文件管理的具体使用
2022/03/20 Python
Ruby处理YAML和json数据
2022/04/18 Ruby