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
相关推荐
飞川撸码6 天前
【LeetCode 热题100】BFS/DFS 实战:岛屿数量 & 腐烂的橘子(力扣200 / 994 )(Go语言版)
leetcode·深度优先·宽度优先
wen__xvn6 天前
BFS入门刷题
算法·宽度优先
Swift社区9 天前
面试高频图论题『墙与门』:Swift BFS 解法全流程拆解
面试·swift·宽度优先
图初14 天前
路径规划算法BFS/Astar/HybridAstar简单实现
算法·动态规划·astar·宽度优先·hybridastar
算法给的安全感25 天前
bfs-最小步数问题
java·算法·宽度优先
诚丞成1 个月前
BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(上)
java·算法·宽度优先
GGBondlctrl1 个月前
【leetcode】《BFS扫荡术:如何用广度优搜索征服岛屿问题》
算法·leetcode·bfs·宽度优先·图像渲染·岛屿的数量·被围绕的区域
小羊在奋斗1 个月前
【今日三题】ISBN号码(模拟) / kotori和迷宫(BFS最短路) / 矩阵最长递增路径(dfs)
矩阵·深度优先·宽度优先
请来次降维打击!!!1 个月前
优选算法系列(8.多源BFS)
java·c++·算法·宽度优先
yuanManGan1 个月前
领略算法真谛: 多源bfs
算法·宽度优先