当前位置:实例文章 » 其他实例» [文章]leetcod111.二叉树的最小深度

leetcod111.二叉树的最小深度

发布人:shili8 发布时间:2025-03-13 21:25 阅读次数:0

**二叉树的最小深度**

二叉树是一种常见的数据结构,具有左右孩子的每个结点都只有一个父结点。二叉树的最小深度是指从根结点到叶子结点的最短路径长度。

在 LeetCode 上,有一道题目要求我们实现一个函数 `minDepth`,该函数接收一个二叉树的根结点作为输入,并返回其最小深度。这个问题看起来很简单,但实际上需要一些技巧来解决。

**定义和约束**

假设我们有一个二叉树结构,如下所示:

3 / 
920 / 
157


在这个例子中,根结点是 `3`,其左右孩子分别是 `9` 和 `20`。我们需要找到从根结点到叶子结点的最短路径长度。

**解决方案**

我们的解决方案基于以下思路:

1. 如果二叉树为空,则其最小深度为0。
2. 如果二叉树只有一个结点(即根结点),则其最小深度为1。
3. 如果二叉树有多个结点,我们可以分别递归地计算左右子树的最小深度,然后返回较小的一个。

下面是实现这个解决方案的 Python代码:

class TreeNode:
 def __init__(self, x):
 self.val = x self.left = None self.right = Nonedef minDepth(root):
 """
 :type root: TreeNode :rtype: int """
 # 如果二叉树为空,则其最小深度为0。
 if not root:
 return0 # 如果二叉树只有一个结点(即根结点),则其最小深度为1。
 if not root.left and not root.right:
 return1 # 如果二叉树有多个结点,我们可以分别递归地计算左右子树的最小深度,然后返回较小的一个。
 left_depth = minDepth(root.left)
 right_depth = minDepth(root.right)
 # 返回较小的一个。
 return min(left_depth, right_depth) +1


**示例**

我们可以使用这个函数来计算上述二叉树的最小深度:

# 创建一个根结点。
root = TreeNode(3)

# 创建左右孩子。
root.left = TreeNode(9)
root.right = TreeNode(20)

# 创建左子树的孩子。
root.right.left = TreeNode(15)
root.right.right = TreeNode(7)

# 计算最小深度。
print(minDepth(root)) # 输出:2


**总结**

二叉树的最小深度是一个简单但有趣的问题。通过递归地计算左右子树的最小深度,然后返回较小的一个,我们可以实现一个高效且有效的解决方案。这个问题可以帮助我们理解二叉树的结构和属性,并在实际应用中使用这些知识来优化我们的算法和数据结构。

相关标签:
其他信息

其他资源

Top