题目描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
解题思路
这里需要注意的是,当一棵树只有一个叶子节点的时候,其最小深度为2,这种情况需要特殊考虑一下。
用递归实现本题。
代码实现
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
l_height = self.minDepth(root.left)
r_height = self.minDepth(root.right)
# 当前节点左子树或者右子树为空的情况下,至少有一个为0
if not l_height or not r_height:
return l_height+r_height + 1
# 左右子树都不为空的情况
else:
return min(l_height, r_height) + 1