Description
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
Code
# 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
"""
if root == None:
return 0
elif root.left == root.right == None:
return 1
elif root.left == None:
return 1 + self.minDepth(root.right)
elif root.right == None:
return 1 + self.minDepth(root.left)
else:
return 1 + min(self.minDepth(root.left), self.minDepth(root.right))
#可以精简为:
if root == None:
return 0
if root.left == None or root.right == right:
return 1 + max(self.minDepth(root.left), self.minDepth(root.right))
return 1 + min(self.minDepth(root.left), self.minDepth(root.right))
Conclusion
一开始以为这题很简单,结果有不少小细节没考虑清,导致答案错了几回。代码中几个elif就是后来添的判断。看了下别人的提交,思路都是一样的,就是在比谁的代码短。其实有时候这个风气不太好,有些人的代码是真的精简,而有些人的代码则纯粹是为了短而短,将if后的语句和if放在同一行,真的是没什么意义。