算法与数据结构之BFS广度优先遍历

本文我们来讲解一下图的广度优先遍历算法(BFS),看完本文相信你对BFS算法的理解会更进一步。

BFS算法流程

**核心思想:**一层一层向外遍历,先访问起点所有相邻节点,再访问下一层,类似水波扩散

  • 初始化队列,将起点入队;创建访问标记数组 / 集合,标记起点已访问,防止重复遍历。
  • 队列不为空时循环: ① 队首节点出队,处理该节点(打印、记录结果等) ② 遍历该节点所有相邻邻居 ③ 邻居未被访问:标记已访问,并入队
  • 队列为空,遍历结束

例题

例子是最好的学习工具,接下来我们以这个图为例,来详细讲解一下BFS算法的基本流程。

相关推荐
chushiyunen14 分钟前
动态规划、贪心算法、分治法
算法·贪心算法·动态规划
hansang_IR16 分钟前
【题解】P4456 [CQOI2018] 交错序列(数学递推)
c++·算法
青少儿编程课堂20 分钟前
贪心算法进阶:区间调度与最少资源整合解析
c++·python·算法·贪心·信息学竞赛·区间调度
青山木42 分钟前
Hot 100 --- 划分字母区间
java·数据结构·算法·leetcode·贪心算法
Sunsets_Red1 小时前
浅谈扫描线
c++·算法·编程·题解·洛谷·扫描线·信息学竞赛
a187927218311 小时前
【算法】双指针与滑动窗口(一):框架总纲——三类问题、一个原理与判决书
算法·leetcode·区间·双指针·滑动窗口·原理·算法讲解
shehuiyuelaiyuehao1 小时前
算法42,模拟算法,模拟z字形变换
算法
朝朝辞暮i1 小时前
C++第一课
开发语言·c++·算法
橘子汽水1681 小时前
Leetcode 208,207实现Trie前缀树,课程表
java·数据结构·算法·leetcode