📅  最后修改于: 2023-12-03 14:58:18.016000             🧑  作者: Mango
本题考察二叉搜索树(BST)。
给定一个二叉搜索树,找到它的最小深度。最小深度是从根节点到最近的叶子节点的最短路径上的节点数量。
输入包含两行,第一行为二叉搜索树中的节点数 $n$,第二行为 $n$ 个整数(范围 $[-10^9,10^9]$),表示树中各个节点的值。
输出一个整数,表示二叉搜索树的最小深度。
5
3 1 5 4 6
2
最小深度是从根节点到最近的叶子节点的最短路径上的节点数量,因此我们需要分别计算左子树和右子树的最小深度,然后取其中的最小值再加 1。
这里有一个细节需要特别注意,当左子树或右子树为空时,我们需要取非空子树的最小深度,而不是取两个子树的最小深度。
下面是 Python3 代码的实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def minDepth(self, root: TreeNode) -> int:
if root is None:
return 0
if root.left is None and root.right is None:
return 1
left_depth = self.minDepth(root.left)
right_depth = self.minDepth(root.right)
if left_depth == 0 or right_depth == 0:
return left_depth + right_depth + 1
else:
return min(left_depth, right_depth) + 1
注:以上代码通过 LeetCode 题库中的测试。