Python实现二叉树的最小深度的两种方法

 更新时间:2019年09月30日 15:04:33   作者:求兵  
这篇文章主要介绍了Python实现二叉树的最小深度的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

找到给定二叉树的最小深度

最小深度是从根节点到最近叶子节点的最短路径上的节点数量

注意:叶子节点没有子树

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/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解决pyecharts在jupyter notebook中使用报错问题

    解决pyecharts在jupyter notebook中使用报错问题

    这篇文章主要介绍了解决pyecharts在jupyter notebook中使用报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python内存优化的七种技巧分享

    Python内存优化的七种技巧分享

    本文将重点介绍 Python 的内置机制,并介绍 7 种原始但有效的内存优化技巧,掌握这些技巧将大大提高你的 Python 编程能力,文中通过代码示例给大家讲解的非常详细,感兴趣的小伙伴跟着小编一起来学习吧
    2024-02-02
  • python实现二分类的卡方分箱示例

    python实现二分类的卡方分箱示例

    今天小编就为大家分享一篇python实现二分类的卡方分箱示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 浅谈一下python中threading模块

    浅谈一下python中threading模块

    这篇文章主要介绍了一下python中threading模块,threading提供了一个比thread模块更高层的API来提供线程的并发性。这些线程并发运行并共享内存,需要的朋友可以参考下
    2023-04-04
  • django 框架实现的用户注册、登录、退出功能示例

    django 框架实现的用户注册、登录、退出功能示例

    这篇文章主要介绍了django 框架实现的用户注册、登录、退出功能,结合实例形式详细分析了Django框架用户注册、登陆、退出等功能具体实现方法及操作注意事项,需要的朋友可以参考下
    2019-11-11
  • python 自动去除空行的实例

    python 自动去除空行的实例

    今天小编就为大家分享一篇python 自动去除空行的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python程序封装为win32服务的方法

    python程序封装为win32服务的方法

    这篇文章主要为大家详细介绍了python程序封装为win32服务的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • python 参数列表中的self 显式不等于冗余

    python 参数列表中的self 显式不等于冗余

    Self in the Argument List: Redundant is not Explicit
    2008-12-12
  • Python设计模式中的备忘录模式

    Python设计模式中的备忘录模式

    这篇文章主要为大家详细介绍了Python设计模式中的备忘录模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 通过python-pptx模块操作ppt文件的方法

    通过python-pptx模块操作ppt文件的方法

    这篇文章主要介绍了通过python-pptx模块操作ppt文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,本文给大家介绍的需要的朋友可以参考下
    2020-12-12

最新评论