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实现复制整个目录的方法
May 12 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
对pandas进行数据预处理的实例讲解
Apr 20 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
利用pyecharts读取csv并进行数据统计可视化的实现
Apr 17 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
Python爬虫基础之爬虫的分类知识总结
May 13 Python
Python中使用ipython的详细教程
Jun 22 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 远程关机实现代码
2009/11/10 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
vue中的ref和$refs的使用
2018/11/22 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
python paramiko模块学习分享
2017/08/23 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
如何使用python操作vmware
2019/07/27 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
公务员培的训心得体会
2014/09/01 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
大雁塔导游词
2015/02/04 职场文书
走进科学观后感
2015/06/18 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB