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

作者:求兵 时间:2022-05-24 03:30:17 

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

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

注意:叶子节点没有子树

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/

来源:https://blog.csdn.net/qiubingcsdn/article/details/82419605

标签:Python,二叉树,最小深度
0
投稿

猜你喜欢

  • 超简单的Python HTTP服务

    2023-01-22 06:19:15
  • python绘图subplots函数使用模板的示例代码

    2023-05-23 06:05:01
  • 如何在Python 游戏中模拟引力

    2021-11-28 21:51:27
  • JavaScript setTimeout与setTimeinterval使用案例详解

    2024-04-18 09:45:10
  • response.setHeader()方法设置http文件头的值

    2010-03-11 22:43:00
  • Python学习之时间包使用教程详解

    2022-07-18 11:26:39
  • 通过遮罩层实现浮层DIV登录的js代码

    2024-06-24 00:08:58
  • Python OpenCV超详细讲解基本功能

    2021-04-26 11:47:36
  • Python创建字典的八种方式

    2021-02-05 20:43:18
  • 浅谈vue获得后台数据无法显示到table上面的坑

    2024-05-13 09:07:16
  • 一个ASP(VBScript)简单SQL语句构建“类”

    2008-03-12 07:08:00
  • python中lambda()的用法

    2022-07-19 05:15:45
  • 用python建立两个Y轴的XY曲线图方法

    2023-06-30 15:01:26
  • Go语言操作MySQL的知识总结

    2024-01-26 01:43:17
  • 详解如何在 Linux 中安装最新的 Python 3.6 版本

    2022-03-25 15:06:21
  • windows下安装Python虚拟环境virtualenvwrapper-win

    2023-12-23 11:24:08
  • Vue中computed和watch的区别

    2024-05-29 22:22:50
  • js自定义trim函数实现删除两端空格功能

    2024-04-29 13:21:34
  • Python实现连接MySQL数据库的常见方法总结

    2024-01-22 05:28:26
  • Python批量修改文本文件内容的方法

    2022-07-16 08:37:43
  • asp之家 网络编程 m.aspxhome.com