面试算法: 广度优先搜索 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的主要内容,如果未能解决你的问题,请参考以下文章