地址:点击打开链接
其实就是树遍历的变种问题,可以用深度和层次遍历,我选择了深度遍历,注意对根节点的判断,理由是如果根节点如果左右子树只有一颗不为空,则这个子树即为最短路径的一部分
答案:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
return self.getDepth(root, 0)
def getDepth(self,root,depth):
if root == None:
return depth
if not root.left and not root.right:
depth += 1
return depth
if root.left and not root.right:
depth += self.getDepth(root.left, 1)
if root.right and not root.left:
depth += self.getDepth(root.right, 1)
if root.left and root.right:
depth += min(self.getDepth(root.left, 1), self.getDepth(root.right, 1))
return depth