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解决最短路问题
算法·宽度优先
进击的荆棘3 天前
优选算法——BFS
c++·算法·leetcode·宽度优先
一条大祥脚9 天前
ABC460贪心|多源BFS|数论|计数|线段树|树的直径
算法·宽度优先
仍然.11 天前
算法题目---BFS解决FloodFill算法问题
算法·宽度优先
txzrxz12 天前
广度优先搜索详解(BFS)
算法·宽度优先
山楂树の18 天前
广度优先搜索 (BFS)
算法·广度优先·宽度优先
枫叶林FYL19 天前
Tree-of-Thought (ToT) 架构:BFS/DFS搜索策略、价值函数评估、剪枝机制实现
深度优先·剪枝·宽度优先
浅念-22 天前
LeetCode刷题专题:FloodFill泛滥填充算法剖析
数据结构·算法·leetcode·职场和发展·深度优先·宽度优先
山峰哥24 天前
从Explain到SQL优化:一次生产环境慢查询的完整调优复盘
大数据·数据库·sql·性能优化·深度优先·宽度优先
汉克老师25 天前
GESP6级C++考试语法知识(二十七、广度优先搜索(二、二维BFS))
c++·算法·图论·宽度优先·广度优先搜索·gesp6级·gesp六级