lintcode练习-155.二叉树的最小深度

描述

给定一个二叉树,找出其最小深度。

二叉树的最小深度为根节点到最近叶子节点的距离。
您在真实的面试中是否遇到过这个题?  

样例

给出一棵如下的二叉树:

        1

     /     \ 

   2       3

          /    \

        4      5  

这个二叉树的最小深度为 2


解题思路:

利用了二叉树的层次遍历的思想,在每一层的遍历中都判断一下是否有叶子结点,如果有叶子结点,则返回该层深度。
"""
Definition of TreeNode:
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left, self.right = None, None
"""
class Solution:
    """
    @param root: The root of binary tree
    @return: An integer
    """
    def minDepth(self, root):
        # write your code here
        self.depth = 0
        if not root:
            return self.depth
       
        q = [root]
        while q:
            new_q = []
            self.depth += 1
            for node in q:
                if node.left:
                    new_q.append(node.left)
                if node.right:
                    new_q.append(node.right)
                # 判断节点是否为叶子节点, 如果出现叶子节点,即可返回最小深度
                if node.left == None and node.right == None:
                    return self.depth
            q = new_q
        return self.depth

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/80959375