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

二叉树的最小深度

最小深度思路解析:

与求最大深度相比,求最小深度就要简单很多,从上向下访问,只要访问到一个叶节点,证明已经到达了与根节点距离最近的叶节点处,此叶节点的深度即为最小深度.借助队列,如果当前节点为叶节点,则返回该节点的深度为最终结果;如果当前节点不满足上述判断且不为空节点,即存在子节点,则将其子节点依次入队.因此,求最小深度的思路十分清晰.代码中的变量如下:

root变量:表示给定二叉树的根节点

queue变量:表示队列

depth变量:表示当前节点的深度,根节点的深度为1

node变量:表示取出的队列头部元素中的节点

有一点不同之处:每个节点入队时,将其所处深度与该节点以元组的方式一同入队,首先将根节点及其深度入队,以供迭代过程的开始.代码如下:

from collections import deque  # 导入deque,用于实现队列def minDepth(root):  # 定义函数minDepth,输入参数为二叉树的根节点rootif not root:  # 如果根节点为空,直接返回0,因为空树的深度为0return 0queue = deque([1, root])  # 初始化一个双端队列,将根节点和它的深度(1)作为队列的第一个元素while queue:  # 当队列不为空时,循环执行depth, node = queue.popleft()  # 从队列中弹出一个元素,包含当前节点的深度和节点本身if node and not node.left and not node.right:  # 如果当前节点是叶子节点(没有左右子节点)return depth  # 返回当前深度,因为找到了最小深度if node:  # 如果当前节点不为空queue.append((depth + 1, node.left))  # 将左子节点和它的深度(当前深度+1)加入队列queue.append((depth + 1, node.right))  # 将右子节点和它的深度(当前深度+1)加入队列

http://www.lryc.cn/news/508564.html

相关文章:

  • C#+OpenCv深度学习开发(常用模型汇总)
  • 什么样的LabVIEW控制算自动控制?
  • Linux系统编程——理解系统内核中的信号捕获
  • 《Java 与 OpenAI 协同:开启智能编程新范式》
  • 基于Python大数据的电影可视化分析系统
  • 【杂谈】-为什么Python是AI的首选语言
  • (高可用版本)Kubeadm+Containerd+keepalived部署高可用k8s(v1.28.2)集群
  • 单片机:实现自动关机电路(附带源码)
  • 【YashanDB知识库】ycm-YashanDB列表有数据库显示故障排除步骤
  • 高级的SQL查询技巧有哪些?
  • 使用 UniApp 在微信小程序中实现 SSE 流式响应
  • transformer用作分类任务
  • 【枚举】假币问题
  • easyExcel导出大数据量EXCEL文件,前端实现进度条或者遮罩层
  • Java模拟Mqtt客户端连接Mqtt Broker
  • 【电商搜索】文档的信息论生成聚类
  • 在福昕(pdf)阅读器中导航到上次阅读页面的方法
  • 基于Springboot的数字科技风险报告管理系统
  • 【最后203篇系列】001 - 2024回顾
  • 量子退火与机器学习(1):少量数据求解未知QUBO矩阵,以少见多
  • 矩阵:Input-Output Interpretation of Matrices (中英双语)
  • excel 使用vlook up找出两列中不同的内容
  • YoloV8改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用
  • 两地的日出日落时间差为啥不相等
  • Android Https和WebView
  • 2.5.1 文件管理基本概念
  • 在 PowerShell 中优雅地显示 Python 虚拟环境
  • K8S Ingress 服务配置步骤说明
  • 观察者模式(sigslot in C++)
  • python使用pip进行库的下载