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 小时前
数据结构——二十九、图的广度优先遍历(BFS)(王道408)
数据结构·数据库·学习·程序人生·考研·算法·宽度优先
小李小李快乐不已13 小时前
图论理论基础(1)
数据结构·算法·leetcode·深度优先·图论·广度优先·宽度优先
大数据张老师1 天前
数据结构——广度优先搜索
数据结构·图论·宽度优先
微笑尅乐5 天前
BFS 与 DFS——力扣102.二叉树的层序遍历
leetcode·深度优先·宽度优先
知星小度S5 天前
算法训练之多源BFS
算法·宽度优先
2501_924731478 天前
科技赋能畜牧业|小吉快检 BL-08plus 推动行业数字化转型
宽度优先
让我们一起加油好吗8 天前
【基础算法】多源 BFS
c++·算法·bfs·宽度优先·多源bfs
Craaaayon11 天前
【数据结构】二叉树-图解广度优先搜索
java·数据结构·后端·算法·宽度优先
敲代码的嘎仔22 天前
牛客算法基础noob56 BFS
java·开发语言·数据结构·程序人生·算法·宽度优先
1白天的黑夜11 个月前
队列+宽搜(BFS)-662.二叉树最大宽度-力扣(LeetCode)
c++·leetcode·宽度优先·队列