JS算法:广度优先搜索(BSF)的理解

广度优先搜索方法的实现

(基于《学习JavaScript数据结构与算法》补充学习)
在这里插入图片描述

实现步骤如下

  • 1.用initializeColor函数来将color数组初始化为白色;也就是将每个节点初始化为白色未读
  • 2.声明和创建一个队列Queue实例,用于储存 待访问 和 待探索的顶点
  • 3.将我们的起始的顶点加入队列
  • 4.然后我们就进入循环,循环的条件是队列不为空
    • (1)循环第一步:我们从队列中移除一个顶点,并通过邻接表adjList来获取该顶点的所有邻居,并将该顶点color置为灰色表示该顶点已被我们发现
    • (2)循环第二步:在获取了上一步我们的顶点的邻居后,我们开始对这些邻居做个for循环,在for循环中我们会判断这些邻居是否为white即是否曾被发现过,如果是white我们就将其置为grey即被我们发现了,并且我们还要将这些邻居放入我们的队列
    • (3)循环第三步:将该顶点的color置为black,表示经过以上两步表示我们对该顶点已经完成探索了
    • (4)继续循环:因为我们上一步将我们顶点的邻居放进了队列,因此我们在这个循环中会依据队列先进先出的原则根据之前的邻接表来继续我们的循环,补充一下:我们的BFS 和DFS 的区别就在这里了,我们采用队列还是栈将会决定我们的邻居被探索的顺序

代码实现

兄弟们我们具体看一下算法的实现,就是图和队列部分的实现需要兄弟们自己去完善,这里主要是写了算法结构

//BFS从这里开始

//定义Colors类为后续顶点设置颜色区分
const Colors = {
   
    WHITE:0,
    GREY:1,
    BLACK:2
}
//将所有节点初始化为白色
const initializeColor
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值