dfs
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
if not root.left and not root.right:
return 1
min_depth = 10**5
if root.left:
min_depth = min(self.minDepth(root.left), min_depth)
if root.right:
min_depth = min(self.minDepth(root.right), min_depth)
return min_depth+1
一样的不同写法
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
if not root.left and not root.right:
return 1
m1 = self.minDepth(root.left)
m2 = self.minDepth(root.right)
if not root.left or not root.right:
return m1 + m2 +1
return min(m1,m2)+1
BFS
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
stack = [root]
depth = 0
while stack:
for i in range(len(stack)):
node = stack.pop(0)
if not node.left and not node.right:
return depth + 1
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
depth += 1