当前位置: 首页 > backend >正文

广度优先搜索(BFS, Breadth-First Search)

好的,我给你讲 广度优先搜索(BFS, Breadth-First Search),并配一个直观例子。


1️⃣ 什么是广度优先

广度优先搜索的特点:

  1. 按层访问:先访问根节点,然后访问它的直接子节点,再访问子节点的子节点……

  2. 使用队列(FIFO):保证先入队的节点先访问。

  3. 常用于:层序遍历二叉树、最短路径搜索、图的遍历等。

核心思想:先访问“广度”(当前层)再访问“深度”(下一层)。


2️⃣ 举例:二叉树层序遍历

假设有二叉树:

        1/ \2   3/ \   \4   5   6

用列表表示为:

[1, 2, 3, 4, 5, None, 6]

BFS 遍历过程

  1. 初始队列

queue = [1]
  • 访问 1,加入结果 [1]

  • 将左右子节点 23 入队

queue = [2, 3]
  1. 访问第二层

  • 访问 2 → 结果 [2],入队 45

  • 访问 3 → 结果 [2, 3],入队右子节点 6

queue = [4, 5, 6]
  1. 访问第三层

  • 访问 4, 5, 6 → 结果 [4, 5, 6]

  • 没有子节点,队列为空,结束


最终层序遍历结果:

[[1], [2, 3], [4, 5, 6]]

✅ 可以看到,先访问每一层的所有节点,再进入下一层,这就是 BFS。


如果你愿意,我可以帮你画一张 队列推进示意图,让你一眼就能看懂每一步队列里存的节点和访问顺序,非常直观。

你想让我画吗?

http://www.xdnf.cn/news/19710.html

相关文章:

  • 数字化转型的六大天问:你的项目为何失败
  • 数据开发工作了一年,准备跳槽,回顾一些面试常见问题,大数据面试题汇总与答案分享
  • 【3D打印】3D打印机首次使用心得
  • 2025最新“Java 面试八股文 + 各大厂的面试真题”限时开源
  • 人工智能助力流感疫苗选择:MIT 团队推出 VaxSeer 系统
  • Understanding the Flap T in American English
  • 开源企业级快速开发平台(JeecgBoot)
  • Python闭包机制:原理、应用与安全防护
  • 【Doris入门】Doris数据表模型:聚合模型(Aggregate Key Model)详解
  • java-设计模式-4-创建型模式-工厂
  • 【52页PPT】服务业数字化转型如何做(附下载方式)
  • Ubuntu 用户和用户组
  • X86、X64 与 ARM:架构的剖析与比较
  • webpack性能优化指南
  • MacOS - 记录MacOS发烫的好几天 - 幕后黑手竟然是
  • 神经网络|(十八)概率论基础知识-伽马函数溯源-阶乘的积分表达式
  • k8s常用命令
  • 对矩阵行化简操作几何含义的理解
  • HDI是什么?与普通线路板有何区别?优势在哪?
  • 嵌入式git分支管理策略
  • Java基础第9天总结(可变参数、Collections、斗地主)
  • 魔域服务器多少钱一个月?魔域服务器配置要求及推荐
  • Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十四天
  • 鸿蒙Next开发指南:XComponent与Progress组件的深度解析与实践
  • 在 PySpark 中解锁窗口函数的力量,实现高级数据转换
  • 数控机床相邻轨迹最大过渡速度计算方法介绍
  • 【Kubernetes】知识点2
  • 【数学建模学习笔记】时间序列分析:LSTM
  • Vue 3 + TypeScript 现代前端开发最佳实践(2025版指南)
  • 【完整源码+数据集+部署教程】PHC桩实例分割系统源码和数据集:改进yolo11-Faster-EMA