给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
方法1:
迭代。n记录层数(注意n要从1开始,因为会在循环的半路中就返回n,如果从0开始的话要返回n+1),stack为栈,每一次stack记录的都是属于根节点属于同一层的子树。
# 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 not root:
return 0
stack = [root]
n = 1
while stack:
next_layer = []
for root in stack:
if root.left is None and root.right