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
相关推荐
llz_1127 小时前
图(邻接表)-(DFS/BFS)-Dijkstra
算法·深度优先·dijkstra·宽度优先
热爱生活的猴子1 天前
算法中DFS & BFS 核心学习笔记
算法·深度优先·宽度优先
lixinnnn.2 天前
bfs: kotori和迷宫
算法·宽度优先
闻缺陷则喜何志丹2 天前
【图论 BFS染色 并集查找 】P3663 [USACO17FEB] Why Did the Cow Cross the Road III S|普及+
c++·算法·图论·染色法·宽度优先·并集查找
代码不停2 天前
BFS解决拓扑排序和FloodFill问题
java·算法·宽度优先
sin_hielo4 天前
leetcode 2092(排序+bfs)
算法·leetcode·宽度优先
_dindong4 天前
算法杂谈:回溯路线
数据结构·算法·动态规划·bfs·宽度优先
月明长歌6 天前
【码道初阶】【LeetCode 958】判定完全二叉树:警惕 BFS 中的“管中窥豹”陷阱
算法·leetcode·宽度优先
询问QQ:6882388613 天前
MOPSO-PID:多目标粒子群优化PID的探索之旅
宽度优先
Flash.kkl13 天前
优先算法专题十五——BFS_FloodFill
算法·宽度优先