栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

BFS框架与终止条件-python-leetcode刷题

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

BFS框架与终止条件-python-leetcode刷题

leetcode 树深搜索用BFS方法
104题最大深度 & 111题最小深度
区别只在于终止条件不同,BFS框架一致

搜最大深度时,即使碰到某个节点无,也继续搜

搜最小深度时,只要出现左右都无子节点的悬挂点,就返回深度

附代码
104最大深度

class Solution:
    def minDepth(self, root: TreeNode) -> int:
        # BFS解法--遍历每一层,有的话则depth+1
        # queue = collections.deque([root])
        queue = []
        queue.append(root)
        depth = 0

        while queue:
            size = len(queue)
            for _ in range(size):
                # cur = queue.popleft()
                cur = queue.pop(0)
                if not cur:
                    continue
                if cur.left:
                    queue.append(cur.left)
                if cur.right:
                    queue.append(cur.right)
            depth += 1
        return depth

111最小深度

class Solution:
    def minDepth(self, root: TreeNode) -> int:
        # BFS解法二
        if not root:
            return 0
        
        depth = 1
        queue = []
        queue.append(root)
        while queue:
            for i in range(len(queue)):
                cur = queue.pop(0)
                if not cur.left and not cur.right:
                    return depth
                if cur.left:
                    queue.append(cur.left)
                if cur.right:
                    queue.append(cur.right)
            depth += 1
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号