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)的算法思想:原理、实现与应用
开发语言·数据结构·c++·算法·宽度优先
敲上瘾5 天前
FloodFill算法——搜索算法
c++·算法·深度优先·宽度优先
诚丞成14 天前
BFS算法篇——广度优先搜索,探索未知的旅程(上)
算法·宽度优先
miilue15 天前
[LeetCode] 二叉树 I — 深度优先遍历(前中后序遍历) | 广度优先遍历(层序遍历):递归法&迭代法
java·数据结构·c++·算法·leetcode·深度优先·宽度优先
敲上瘾18 天前
BFS(广度优先搜索)——搜索算法
数据结构·c++·算法·搜索引擎·宽度优先·图搜索算法
硕风和炜22 天前
【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】
java·算法·leetcode·二叉树·bfs·宽度优先·完全二叉树
qwq_ovo_pwp25 天前
题解 洛谷 Luogu P1113 杂务 图论 BFS C++
数据结构·c++·算法·图论·宽度优先
余辉zmh25 天前
【搜索回溯算法】:BFS的魔力--如何使用广度优先搜索找到最短路径
数据结构·c++·算法·leetcode·宽度优先
he101011 个月前
1/20赛后总结
算法·深度优先·启发式算法·广度优先·宽度优先
悄悄敲敲敲1 个月前
C++:bfs解决多源最短路与拓扑排序问题习题
算法·宽度优先