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
相关推荐
小羊在奋斗3 天前
【多源BFS】01 矩阵 / 飞地的数量 / 地图中的最高点 / 地图分析 / 腐烂的苹果
算法·矩阵·宽度优先
XYY3693 天前
搜索与图论 树的广度优先遍历 图中点的层次
算法·图论·宽度优先
对方正在长头发丿4 天前
P1162 填涂颜色(BFS)
数据结构·c++·算法·蓝桥杯·宽度优先
用手码出世界5 天前
二叉树——队列bfs专题
数据结构·算法·宽度优先
图灵科竞社资讯组10 天前
DFS/BFS简介以及剪枝技巧
深度优先·剪枝·宽度优先
阑梦清川11 天前
蓝桥杯---BFS解决FloofFill算法1---图像渲染
算法·蓝桥杯·宽度优先
愚戏师12 天前
数据结构与算法分析:树与哈希表(一)
数据结构·算法·链表·深度优先·广度优先·宽度优先
pipip.12 天前
BFS解决----多源最短路径问题
算法·宽度优先
Reese_Cool13 天前
【有外界干扰的BFS】经典题P2895Meteor Shower S
数据结构·c++·算法·蓝桥杯·宽度优先
Vitalia13 天前
⭐算法OJ⭐并查集的应用/DFS/BFS:省份数量问题 Number of Provinces
算法·深度优先·宽度优先