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使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
python 编程之twisted详解及简单实例
Jan 28 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
python基础练习之几个简单的游戏
Nov 10 Python
django实现用户登陆功能详解
Dec 11 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
python实现排序算法解析
Sep 08 Python
Python对excel文档的操作方法详解
Dec 10 Python
django中间键重定向实例方法
Nov 10 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
python 调整图片亮度的示例
Dec 03 Python
selenium+headless chrome爬虫的实现示例
Jan 08 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
php中apc缓存使用示例
2013/12/25 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
node.js实现快速截图
2016/08/27 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
无阻塞加载js,防止因js加载不了影响页面显示的问题
2016/12/18 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
python实现归并排序算法
2018/11/22 Python
Python中new方法的详解
2019/01/15 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
经管应届生求职信
2013/11/17 职场文书
公积金单位接收函
2014/01/11 职场文书
大型车展策划方案
2014/02/01 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers