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
相关推荐
雷达学弱狗7 天前
广度优先搜索(BFS, Breadth-First Search)
数据结构·算法·宽度优先
闻缺陷则喜何志丹11 天前
【分治法 BFS 质因数分解】P12255 [蓝桥杯 2024 国 Java B] 园丁|普及+
c++·算法·蓝桥杯·宽度优先·质因数分解·分治法
liulilittle24 天前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
zxctsclrjjjcph1 个月前
【递归、搜索和回溯】FloodFill 算法介绍及相关例题
c++·算法·leetcode·宽度优先·深度优先遍历
codelancera1 个月前
算法-广度优先遍历-判断迷宫是否有出口
算法·宽度优先
流星白龙1 个月前
【C++算法】89.多源BFS_01 矩阵
c++·算法·宽度优先
Code Warrior2 个月前
【每日算法】专题十七_多源 BFS
数据结构·c++·算法·宽度优先
吗喽对你问好2 个月前
Java机考题:815. 公交路线 图论BFS
java·图论·宽度优先
YuTaoShao2 个月前
【LeetCode 热题 100】994. 腐烂的橘子——BFS
java·linux·算法·leetcode·宽度优先
是店小二呀2 个月前
【算法-BFS 解决最短路问题】探索BFS在图论中的应用:最短路径问题的高效解法
算法·图论·宽度优先