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的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
python中列表和元组的区别
Dec 18 Python
Python读写及备份oracle数据库操作示例
May 17 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
Python中zip()函数的简单用法举例
Sep 02 Python
pytorch构建多模型实例
Jan 15 Python
django admin 添加自定义链接方式
Mar 11 Python
Python基于pandas爬取网页表格数据
May 11 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
用python批量解压带密码的压缩包
May 31 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
一个ftp类(ini.php)
2006/10/09 PHP
教你如何把一篇文章按要求分段
2006/10/09 PHP
PHP函数utf8转gb2312编码
2006/12/21 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
bootstrap弹出层的多种触发方式
2017/05/10 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
零基础写python爬虫之使用Scrapy框架编写爬虫
2014/11/07 Python
python引用DLL文件的方法
2015/05/11 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Django中create和save方法的不同
2019/08/13 Python
python程序如何进行保存
2020/07/03 Python
浅析Python打包时包含静态文件处理方法
2021/01/15 Python
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
培训心得体会
2013/12/29 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
2014流动人口计划生育工作总结
2014/12/20 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
接待员岗位职责范本
2015/04/15 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
交通事故案件代理词
2015/05/23 职场文书
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers