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
相关推荐
CV工程师小林17 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
Chase-Hart2 天前
【每日一题】LeetCode 815.公交路线(广度优先搜索、数组、哈希表)
数据结构·算法·leetcode·散列表·宽度优先
人才程序员2 天前
CSP-J 算法基础 广度优先搜索BFS
数据结构·c++·算法·深度优先·宽度优先·比赛·noi
emmm_Yeah4 天前
9.15 BFS中等 133 Clone Graph review 138 随机链表的复制
算法·链表·宽度优先
joker_zh535 天前
多源BFS之矩阵距离
算法·矩阵·宽度优先·多源bfs
星夜孤帆7 天前
LeetCode之图的广度优先搜索
算法·宽度优先
MIMO. mimo9 天前
深度优先算法,广度优先算法,hill climbing,贪心搜索,A*算法,启发式搜索算法是什么,比起一般搜索法算法有什么区别
算法·深度优先·宽度优先
白开水都有人用10 天前
图的广度优先遍历与深度优先遍历(C语言)
算法·深度优先·宽度优先
No.Ada17 天前
DAY53-图论BFS
算法·图论·宽度优先
修炼室19 天前
DFS、BFS、Union-Find:找出图中省份数量的最佳方法
算法·深度优先·宽度优先