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
相关推荐
山楂树の4 天前
广度优先搜索 (BFS)
算法·广度优先·宽度优先
枫叶林FYL5 天前
Tree-of-Thought (ToT) 架构:BFS/DFS搜索策略、价值函数评估、剪枝机制实现
深度优先·剪枝·宽度优先
浅念-8 天前
LeetCode刷题专题:FloodFill泛滥填充算法剖析
数据结构·算法·leetcode·职场和发展·深度优先·宽度优先
山峰哥10 天前
从Explain到SQL优化:一次生产环境慢查询的完整调优复盘
大数据·数据库·sql·性能优化·深度优先·宽度优先
汉克老师11 天前
GESP6级C++考试语法知识(二十七、广度优先搜索(二、二维BFS))
c++·算法·图论·宽度优先·广度优先搜索·gesp6级·gesp六级
仍然.12 天前
算法题目---队列+宽搜(BFS)
算法·宽度优先
开开心心_Every13 天前
支持自定义名单的实用随机抽签工具
运维·服务器·pdf·电脑·excel·启发式算法·宽度优先
运筹vivo@17 天前
leetcode每日一题: 跳跃游戏 IV
leetcode·游戏·宽度优先
Shan120518 天前
广度优先搜索之层序遍历
数据结构·算法·宽度优先
y = xⁿ21 天前
20天速通LeetCodeday15:BFS广度优先搜索
算法·宽度优先