给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量
坑:此处需注意判断边界条件,如果左子树深度、右子树深度均不为0,则用min取其中最小值。
如果有一个为0,取其中非0的数;都为0,取0。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。注意是叶子节点。什么是叶子节点,左右孩子都为空的节点才是叶子节点.
class Solution(object):
def minDepth(self, root):
# 1.递归结束条件
if not root: return 0
# 3.本级递归应完成操作
left_depth = self.minDepth(root.left)
right_depth = self.minDepth(root.right)
# 2.返回值 每个子节点的深度
if left_depth and right_depth:
return min (left_depth, right_depth)+1
if not left_depth and not right_depth:
return 1
if not left_depth or not right_depth:
return max(left_depth, right_depth)+1
# class Solution:
# def minDepth(self, root: TreeNode) -> int:
# if not root : return 0
# leftDepth = self.minDepth(root.left)
# rightDepth = self.minDepth(root.right)
# childDepth = min(leftDepth, rightDepth) if leftDepth and rightDepth else leftDepth or rightDepth
# return 1 + childDepth