# LeetCode 111. Minimum Depth of Binary Tree--Python解法--二叉树最小高度--迭代，递归

2020/01/15 共 1149 字，约 4 分钟

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.

Note: A leaf is a node with no children.

Example:

Given binary tree [3,9,20,null,null,15,7],

``````    3
/ \
9  20
/  \
15   7
``````

``````# 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:
def helper(root, height):
if root == None:
return height-1
if root.left == None and root.right == None:
return height
elif root.left == None:
return helper(root.right, height+1)
elif root.right == None:
return helper(root.left, height+1)
return min(helper(root.left, height+1), helper(root.right, height+1))
return helper(root, 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
stack=[(1,root)]
height=1
while stack!=[]:
depth,root=stack.pop(0)
child=[root.left,root.right]
if not any(child):
height=max(depth,height)
return height
for i in child:
if i is not None:
stack.append((depth+1,i))
return height
``````