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判断变量是否已经定义的方法
Aug 18 Python
基于python实现的抓取腾讯视频所有电影的爬虫
Apr 22 Python
Python选课系统开发程序
Sep 02 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
python绘制漏斗图步骤详解
Mar 04 Python
使用python切片实现二维数组复制示例
Nov 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中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
javascript的数组和常用函数详解
2014/05/09 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
vant IndexBar实现的城市列表的示例代码
2019/11/20 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
基于python实现微信模板消息
2015/12/21 Python
python黑魔法之编码转换
2016/01/25 Python
浅谈Python中函数的参数传递
2016/06/21 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
Python学习之os模块及用法
2020/06/03 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
银行学习十八大感想
2014/01/11 职场文书
养殖项目策划书范文
2014/01/13 职场文书
应届大学生自荐书
2014/06/17 职场文书
售房协议书
2014/08/19 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
全陪导游词
2015/02/04 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
好人好事新闻稿
2015/07/17 职场文书
表扬信范文
2019/04/22 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis