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
相关推荐
YuTaoShao2 天前
【LeetCode 每日一题】1161. 最大层内元素和——BFS
算法·leetcode·宽度优先
2501_941822753 天前
面向资源配额与公平调度机制的互联网系统设计思路与多语言工程实现实践分享
支持向量机·宽度优先·推荐算法
2501_941148153 天前
面向微服务分布式限流与高可用熔断的互联网系统实践与多语言工程分享
启发式算法·宽度优先
Boilermaker19924 天前
[算法基础] FooldFill(DFS、BFS)
算法·深度优先·宽度优先
皮卡蛋炒饭.7 天前
宽搜bfs与深搜dfs
算法·宽度优先
Flash.kkl9 天前
优选算法专题十八——BFS解决拓扑排序
算法·宽度优先
星火开发设计11 天前
广度优先搜索(BFS)详解及C++实现
数据结构·c++·算法··bfs·宽度优先·知识
_w_z_j_11 天前
二叉树的右视图(BFS或DFS)
算法·深度优先·宽度优先
Flash.kkl12 天前
优先算法专题十七——多源BFS
算法·宽度优先
llz_11216 天前
图(邻接表)-(DFS/BFS)-Dijkstra
算法·深度优先·dijkstra·宽度优先