面试算法: 广度优先搜索 BFS

Posted 嘟嘟写写

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试算法: 广度优先搜索 BFS相关的知识,希望对你有一定的参考价值。


广度优先搜索 BFS

  • 广度优先搜索让你能够找出两样东西之间的最短距离,不适合加权图。

  • 找出A点到B点的最短距离。

  
    
    
  
// 用字典表示图形关系,遍历寻找 // 从自己出发,寻找邻居,如果找到直接返回,没找到将邻居入栈,继续寻找,直到所有节点搜索完毕。 let graph = { }
graph
[ 'you' ] = [ 'alice' , 'bob' , 'ceed' ]
graph
[ 'bob' ] = [ 'anuj' , 'peggy' , 'you' ]
graph
[ 'alice' ] = [ 'peggy' ]
graph
[ 'ceed' ] = [ 'thom' , 'jonny' ]
graph
[ 'anuj' ] = [ ]
graph
[ 'peggy' ] = [ ]
graph
[ 'thom' ] = [ ]
graph
[ 'jonny' ] = [ ]
console
. log ( graph ) let searchHistory = [ ] // 搜索标记 let search = [ ] . concat ( graph [ 'you' ] ) // 搜索队列 while ( search . length ) {

let person = search . shift ( )
// 如果没检查过继续检查
if ( searchHistory [ person ] === undefined ) {

if ( isSeller ( person ) ) {
// 找到了
console
. log ( 'find' , person )
break ;
} else {
// 未找到,将邻居加入搜索队列
search
= search . concat ( graph [ person ] )
// 标记已检查
searchHistory
. push ( person )
}
} } // 选后缀m作为目标 function isSeller ( person ) {
return person . lastIndexOf ( 'm' ) !== - 1 }

以上是关于面试算法: 广度优先搜索 BFS的主要内容,如果未能解决你的问题,请参考以下文章

广度优先深度优先搜索算法——面试题

面试刷题:广度优先搜索BFS | 第91期

基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)

几道和「广度优先搜索」有关的算法面试题

算法题——深度优先搜索与广度优先搜索

算法-03 | 深度优先DFS| 广度优先BFS