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

111、二叉树的最小深度

class Solution:def getDepth(self, node):if node is None:  # 基本情况:空节点的深度为0return 0# 递归计算左右子树的深度leftDepth = 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 + leftDepth  # 只有左子树,深度取决于左子树# 正常情况:取左右子树深度的较小值加1result = 1 + min(leftDepth, rightDepth)return resultdef minDepth(self, root):return self.getDepth(root)  # 调用getDepth计算最小深度

让我们用以下二叉树作为例子:

        1/ \2   3/ \4   5/6

计算过程详解

  1. 初始调用 minDepth(1) → 调用 getDepth(1)

    • 节点1不为空
    • 计算左子树深度:getDepth(2)
    • 计算右子树深度:getDepth(3)
  2. 计算 getDepth(2)

    • 节点2不为空
    • 左子树深度:getDepth(4) → 返回1(4是叶子节点)
    • 右子树深度:getDepth(5)
      • getDepth(5):
        • 左子树深度:getDepth(6) → 返回1(6是叶子节点)
        • 右子树深度:getDepth(None) → 返回0
        • 5有左子树无右子树 → 返回1 + leftDepth = 2
    • 2有左右子树 → 返回1 + min(1, 2) = 2
  3. 计算 getDepth(3)

    • 节点3是叶子节点 → 返回1
  4. 回到 getDepth(1)

    • 1有左右子树 → 返回1 + min(2, 1) = 2

为什么结果是2?

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

  • 路径1:1 → 3(长度2)
  • 路径2:1 → 2 → 4(长度3)
  • 路径3:1 → 2 → 5 → 6(长度4)

最短路径是1 → 3,长度为2。

http://www.xdnf.cn/news/4470.html

相关文章:

  • 信息革命对经济、货币体系及权力结构的颠覆性影响
  • 数据结构——排序(万字解说)初阶数据结构完
  • 【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
  • 【C/C++】虚函数
  • 某大型交通规划设计院转型实践:数智化破局复杂工程项目管理,实现高效人力资源一体化管理
  • 华为设备链路聚合实验:网络工程实战指南
  • 【LeetCode】高频 SQL 50题 题解
  • C语言编程--递归程序--Hanoi塔
  • 企业智能化第一步:用「Deepseek+自动化」打造企业资源管理的智能中枢
  • MEGA3:分子进化遗传学分析和序列比对集成软件
  • 检测内存条好坏有工具,推荐几款内存检测工具
  • github+ Picgo+typora
  • OpenCV提取图像中的暗斑/亮斑
  • IvorySQL 再次走进北京大学研究生开源公选课
  • onenet连接微信小程序(mqtt协议)
  • 【国产化】在银河麒麟ARM环境下离线安装docker
  • Spring 如何解决循环依赖问题?
  • JavaScript性能优化:从青铜到王者的进阶之路
  • 从人体姿态到机械臂轨迹:基于深度学习的Kinova远程操控系统架构解析
  • Kubernetes(k8s)学习笔记(九)--搭建多租户系统
  • QMK键盘固件配置详解
  • 2025.05.07-华为机考第三题300分
  • DIFY教程第四弹:通过工作流来创建一个SQL语句的执行器
  • 【计算机基础】任意进制转换方法详解
  • 资产管理系统对比评测:从传统模式到 AI 驱动的变革
  • 引用的使用
  • [Es_1] 介绍 | 特点 | 图算法 | Trie | FST
  • 【C/C++】errno/strerror 和 GetLastError()/FormatMessage 的区别
  • 模拟设计中如何减小失配
  • 4.系统定时器基本定时器