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编写爬虫的基本模块及框架使用指南
Jan 20 Python
简单的python后台管理程序
Apr 13 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
Python函数和模块的使用总结
May 20 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
python 写一个文件分发小程序
Dec 05 Python
Python中seaborn库之countplot的数据可视化使用
Jun 11 Python
python画条形图的具体代码
Apr 20 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 smarty 二级分类代码和模版循环例子
2011/06/01 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
PHP缓存技术的多种方法小结
2012/08/14 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
ASP Json Parser修正版
2009/12/06 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
Bootstrap精简教程
2015/11/27 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python中的with...as用法介绍
2015/05/28 Python
python实现字符串和字典的转换
2018/09/29 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
JS原生实现轮播图的几种方法
2021/03/23 Javascript
自我鉴定思想方面
2013/10/07 职场文书
社区禁毒工作方案
2014/06/02 职场文书
面试通知单大全
2015/04/20 职场文书
教师节老师寄语
2015/05/28 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
导游词之安徽巢湖
2019/12/26 职场文书