最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
递归,若为空树返回0;
若左右子树都为空,则返回+1
若左子树为空,则返回右子树的最小深度+1;
若右子树为空,则返回左子树的最小深度+1;
若左右子树均不为空,则取左、右子树最小深度的较小值,+1;
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
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
elif root.left is None:
return 1 + self.minDepth(root.right)
elif root.right is None:
return 1 + self.minDepth(root.left)
else:
return 1 + min([self.minDepth(root.left), self.minDepth(root.right)])