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

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

注意:叶子节点没有子树

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)

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

时间: 2019-09-29

python创建树结构、求深度_Python实现二叉树的最小深度的两种方法相关推荐

  1. 百钱买百鸡python编程列表推导式_使用循环和列表推导式两种方法求解百钱买百鸡问题。假设大鸡5元一只,中鸡3元一只,小鸡1元三只,现有100元钱想买100只鸡,有多少种买法?...

    [程序题]编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 1/1+1/3+...+1/n [单选题]患者男,67岁.确诊为原发性支气管肺癌,为行手术 ...

  2. python基础入门:实现(无重复字符)字符串的全排列的两种方法

    求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321.(暂时假定字符串没有重复) 目前有两种解决的方法 方法一: def str_sort(s='') ...

  3. 二叉树的层序遍历(两种方法实现)

    两种方法实现二叉树的层序遍历 1.说明 二叉树的层序遍历是面试经常会被考察的知识点,甚至要求当场写出实现过程. 层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数 ...

  4. python气象数据处理与绘图_Python气象数据处理与绘图(15):两种波作用通量计算的python实现及对比(Plumb T-N) (已更正)...

    大气动力学中通常用波作用通量来诊断 Rossby波的传播.常用的三种波作用通量分别为局地E-P 通量,Plumb 波作用通量和T-N 波作用通量.局地E-P 通量可以诊断一段时间内天气尺度瞬变波对定长 ...

  5. python字典去最值_python 比较字典value的最大值的几种方法

    python中获取字典的key列表和value列表 # -*- coding: utf-8 -*- # 定义一个字典 dic = {'剧情': 11, '犯罪': 10, '动作': 8, '爱情': ...

  6. python 字符串转函数名_Python 使用函数名(字符串)调用函数(4种方法)

    先看一个例子: >>> def foo(): print("foo") >>> def bar(): print("bar" ...

  7. python取出字典中最大值_python 比较字典value的最大值的几种方法

    python中获取字典的key列表和value列表 # -*- coding: utf-8 -*- # 定义一个字典 dic = {'剧情': 11, '犯罪': 10, '动作': 8, '爱情': ...

  8. 【 MATLAB 】使用 MATLAB 求由差分方程表示的滤波器的响应的两种方法

    例题: 一个3阶低通滤波器由下面差分方程描述: y(n) = 0.0181 x(n) + 0.0543 x(n-1) + 0.0543 x(n-2) + 0.0181 x(n-3) + 1.76 y( ...

  9. 用python打开视频_python读取视频流提取视频帧的两种方法

    本文实例为大家分享了python读取视频流提取视频帧的具体代码,供大家参考,具体内容如下 方法一:通过imageio库和skimage库 1. 安装环境: pip install imageio pi ...

最新文章

  1. 手机与Camera CCM技术发展趋势
  2. BZOJ2115 [Wc2011] Xor
  3. jquery文本折叠
  4. 2018 Multi-University Training Contest 6-oval-and-rectangle(hdu 6362)-题解
  5. Maven的发布plugin配置
  6. HLS:@E Simulation failed SIGSEGV
  7. 自动化运维工具Ansible实战(四)常用模块
  8. .net System.Web.Mail发送邮件
  9. 跨服务器、跨数据库、多表联合查询
  10. python里常用的正则表达式
  11. 人工智能第六章——约束满足问题(CSP)
  12. 马化腾:灰度法则的七个维度
  13. Android实现百度地图定位(墨雪亲测)
  14. 10个简单的hacker加速你在Python中的数据分析
  15. 关于网站漏洞的案例和解决思路
  16. Jquery ajax, Axios, Fetch区别之我见 Axios中文说明
  17. Linux文件管理系统
  18. R语言入门(学习笔记)
  19. 数学与生活 (远山启 著)
  20. 贪心算法解决最优装载问题c语言,贪心算法解决最优装载问题

热门文章

  1. NLP 自然语言分析理解
  2. 合作式智能运输系统 车用通信系统应用层及应用数据交互标准 第二阶段_为什么一定要了解OPC UA TSN——未来的工业通信标准...
  3. python logging打印终端_想知道Python如何在终端上打印表格吗?两行代码告诉你!
  4. java盛最多水的容器_Leetcode刷题java之11. 盛最多水的容器(top100)
  5. 果园机器人的写作思路_《果园机器人》三年级教学设计
  6. 桌面壁纸的deepin或者uos水印如何去除
  7. php 12小时,使用php怎么将12小时制转换为24小时制
  8. java鼠标事件_Java 模拟鼠标事件
  9. var conf=confirm(确定要删除吗?);_微信查看谁删除了4种方法
  10. Vue.js(8)- 父组件给子组件传值