广度优先遍历(BFS)和深度优先遍历(DFS

在计算机科学中,广度优先遍历(BFS)和深度优先遍历(DFS)是两种常用的图或树的遍历算法,用于按特定顺序访问数据结构中的所有节点。

1. 广度优先遍历(Breadth-First Search, BFS)

  • 核心思想:从起始节点开始,先访问该节点的所有直接相邻节点(同层节点),再按同样顺序访问这些相邻节点的相邻节点(下一层节点),以此类推,直到所有节点被访问。
  • 特点:按 “层次” 顺序遍历,先近后远,类似 “水波扩散”。
  • 依赖的数据结构队列(Queue)
    利用队列的 “先进先出” 特性,确保先访问的节点其相邻节点也先被处理。

2. 深度优先遍历(Depth-First Search, DFS)

  • 核心思想:从起始节点开始,沿着一条路径尽可能深入地访问,直到无法继续(到达叶子节点或已访问节点),再回溯到上一节点,选择另一条未探索的路径继续深入。
  • 特点:优先探索深度,类似 “走迷宫” 时一条路走到头再回头。
  • 依赖的数据结构栈(Stack) 或递归
    • 栈:手动用栈存储待访问节点,利用 “后进先出” 特性实现回溯。
    • 递归:函数调用栈本质上就是栈结构,递归实现更简洁(隐式使用栈)。

示例对比

假设有如下树结构:

plaintext

    A
   / \
  B   C
 / \   \
D   E   F

  • BFS 遍历顺序:A → B → C → D → E → F(先访问 A 的同层节点 B、C,再访问 B 的子节点 D、E 和 C 的子节点 F)。
  • DFS 遍历顺序(以先左后右为例):A → B → D → E → C → F(先深入 A 的左子树 B,再深入 B 的左子树 D,回溯后访问 E,再回溯到 A 的右子树 C,最后访问 F)。

总结

遍历方式核心思想数据结构典型应用场景
BFS按层次逐层访问队列最短路径(无权图)、层次遍历等
DFS深度优先,回溯探索栈 / 递归拓扑排序、连通性分析、迷宫求解等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值