BFS算法框架

这里给出BFS基本算法框架,核心就是借助队列这种数据结构,每次遍历将一个节点的所有邻居节点加入到队列,然后按照队列 FIFO 的特性,实现BFS算法。

python 复制代码
# BFS 算法框架
#  计算从起点 start 到终点 target 的最近距离
def bfs(start, traget):
    step = 0
    # 核心数据结构
    queue = []
    # 避免走回头路
    visited = []
    # 将起点加入队列中
    queue.append(start)
    visited[start] = True

    while queue:
        sz = len(queue)
        for i in range(sz):
            cur = queue.pop()
            # 划重点:这⾥判断是否到达终点
            if cur == traget:
                return step

            for neighbor in cur.adj():
                if not visited[neighbor]:
                    queue.append(neighbor)
                    visited[neighbor] = True

        step += 1
    
    return step
相关推荐
重生之我是Java开发战士3 小时前
【广度优先搜索】FloodFill算法: 图像渲染,岛屿数量,岛屿的最大面积,被围绕的区域
算法·宽度优先
budingxiaomoli1 天前
优选算法--bfs解决FloodFill问题
算法·宽度优先
窝子面2 天前
LeetCode练题六:dfs与bfs
leetcode·深度优先·宽度优先
_小草鱼_4 天前
【搜索与图论】BFS(广度优先搜索)
算法·图论·bfs·宽度优先
靠沿5 天前
【优选算法】专题十八——BFS解决拓扑排序问题
算法·宽度优先
靠沿6 天前
【优选算法】专题十六——BFS解决最短路径问题
redis·算法·宽度优先
靠沿6 天前
【优选算法】专题十七——多源BFS(最短路径问题)
java·算法·宽度优先
handler017 天前
基础算法:BFS
开发语言·数据结构·c++·学习·算法·宽度优先
无敌憨憨大王8 天前
二叉树的最短路径长度(BFS+DFS)
算法·深度优先·宽度优先
靠沿8 天前
【优选算法】专题十五——BFS解决FloodFill算法
算法·宽度优先