力扣111题(BFS)

111、二叉树的最小深度

基本思想:

广度优先搜索

具体实现:

1、根节点入列

2、循环条件是 直到清空队列

3、节点出列以后判断左右子树

    如果左右子树都为空,返回现在的深度

    如果左孩子存在,加入队列,原深度加1

    如果右孩子存在,加入队列,原深度加1

  depth+1此时并不会改变depth

代码:

class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0

        que = collections.deque([(root, 1)])
        while que:
            node, depth = que.popleft()
            if not node.left and not node.right:
                return depth
            if node.left:
                que.append((node.left, depth + 1))
            if node.right:
                que.append((node.right, depth + 1))
        
        return 0

 

上一篇:OpenCV boundingRect、minAreaRect的用法区别


下一篇:输入一棵二叉树,判断该二叉树是否是平衡二叉树。(剑指offer-平衡二叉树)