一文搞懂广度优先搜索(BFS)

本文详细介绍了广度优先搜索(BFS)的基本原理,包括一层一层的遍历方式,如何避免节点重复遍历,以及如何利用BFS求解最短路径问题。此外,还提及了BFS的实现技巧,如使用队列和标记。BFS的应用场景广泛,常用于解决最常规的搜索问题。
摘要由CSDN通过智能技术生成

1、原理:

广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历地结果作为起点,遍历一个距离能访问地所有节点。遍历过的节点不能再次被遍历。

每一层遍历的节点都与根节点的距离相同。设di表示第i个节点与根节点的距离,推导出一个结论,对于先遍历的节点i与后遍历的节点j,有di<=dj。利用这个结论,可以求解最短路径等最优解问题:第一次遍历到目的节点,其所经过的路径为最短路径。

实现BFS:队列(用来存储每一轮遍历得到的节点);标记(对于遍历过的节点,应该将它标记,防止重复遍历)。

2、应用

 思路:最常规的BFS

class Solution {
    public int shortestPathBinaryMatrix(int[][] grid) {
        if(grid[0][0]!=0) return -1;
        int[]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值