当前位置: 首页 > news >正文

佛山营销网站建设公司哈尔滨网站建设推广服务

佛山营销网站建设公司,哈尔滨网站建设推广服务,做英文网站有用吗,教育中介公司网站建设费用给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。(注意题意) 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&#x…

给定一个二叉树,找出其最小深度。
最小深度是从根节点最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。(注意题意)
示例 1:
image.png
输入:root = [3,9,20,null,null,15,7]
输出:2

层序遍历法
# 层序遍历法
class Solution(object):def minDepth(self, root):""":type root: TreeNode:rtype: int"""if not root:return 0queue = deque([(root, 1)]) # 每个元素是元组 一个是树元素值 一个是最小深度 比较巧妙while queue:cur, min_depth = queue.popleft()if not cur.left and not cur.right:return min_depthif cur.left:queue.append((cur.left, min_depth+1))if cur.right:queue.append((cur.right, min_depth+1))return 0

时间复杂度:O(N) 因为每个结点会访问一次
空间复杂度:O(N)在层序遍历法中空间复杂度主要取决于队列的开销,队列中的元素个数不会超过树的节点数。

递归法

注意这块和最大深度不一样,如下是错误代码:说明:叶子节点是指没有子节点的节点。(注意题意)
image.png
这个代码就犯了此图中的误区:说明:叶子节点是指没有子节点的节点。(注意题意)
image.png
如果这么求的话,没有左孩子的分支会算为最短深度。
所以,如果左子树为空,右子树不为空,说明最小深度是 1 + 右子树的深度。
反之,右子树为空,左子树不为空,最小深度是 1 + 左子树的深度。 最后如果左右子树都不为空,返回左右子树深度最小值 + 1 。
image.png

# 递归法
class Solution(object):def minDepth(self, root):""":type root: TreeNode:rtype: int"""return self.getDepth(root)def getDepth(self, node):if node is None:return 0leftDepth = self.getDepth(node.left)  # 左rightDepth = self.getDepth(node.right)  # 右# 中# 当一个左子树为空,右不为空,这时并不是最低点if node.left is None and node.right is not None:return 1 + rightDepth# 当一个右子树为空,左不为空,这时并不是最低点if node.left is not None and node.right is None:return 1 + leftDepthresult = 1 + min(leftDepth, rightDepth)return result

时间复杂度:O(N),其中 N 是树的节点数。对每个节点访问一次。
空间复杂度:O(N)/O(H) 其中 H 是树的高度。空间复杂度主要取决于递归时栈空间的开销,最坏情况下,树呈现链状,空间复杂度为 O(N)。平均情况下树的高度与节点数的对数正相关,空间复杂度为 O(log⁡N)

参考:
https://www.programmercarl.com/0111.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.html

http://www.yayakq.cn/news/534396/

相关文章:

  • 免费的网页模板网站上海企业自助建站系统
  • 精品课程 网站建设质量金融网站源码 asp
  • 服务好的徐州网站建设360建筑网中级机械工程师招聘
  • 如何来做网站微信公众号运营分析报告
  • asp.net网站后台源码wordpress discuz建站
  • 宣城做网站官渡网站设计制作
  • 东莞网站系统找哪里自己如何制作一个网站
  • html5 社团网站模板 代码下载建设运营平台网站的方法
  • 厦门市建设局网站文件深圳东维亚建设公司
  • 自己公司怎么做网站有什么网站可以做运动
  • 国外网站查询网站友情链接检测
  • 兰州北山生态建设局网站开网站做什么
  • 建设银行征信中心网站网站建设实训 课程标准
  • 东莞寮步镇网站linux vps网站搬家命令
  • 搭建网站要多少钱wordpress开发手册下载
  • 南昌网站seo外包服务做谷歌推广一定要网站吗
  • 网站建设栏目说明html wordpress
  • flash做ppt的模板下载网站有哪些网站内部优化有哪些内容
  • 百度站长工具seo综合查询江苏镇江扬中贴吧
  • 来宾网站制作公司网站制作的步骤不包括
  • 山东省建筑住房和城乡建设厅网站wordpress 更改中文
  • 单位网站建设的重要性免费搭建业务网站
  • 可以做水印的网站申请网站服务器
  • 网站好的案例企业网站建设项目描述
  • 益阳网站建设阿里云网站的网页怎么做
  • 省建设厅网站建筑材料备案申请新开传奇网站发布网孞
  • 设计素材网站飘建立劳动关系应当订立劳动合同
  • 太原网站建设平台如何建设淘宝网站首页
  • wordpress 站群软件开发公司公司简介
  • 网站应该如何推广html5网站开发框架