2025-01-23 08:40:17 +03:00

39 lines
713 B
JavaScript

const breadthFirstSearch = (graph, start, end) => {
const queue = graph[start];
const checked = [];
let lastLevelElement = queue[queue.length - 1];
let level = 1;
while (queue.length) {
const candidate = queue.shift();
if (candidate === end) {
return level;
}
if (checked.includes(candidate)) {
continue;
}
queue.push(...(graph[candidate] || []));
if (candidate === lastLevelElement) {
lastLevelElement = queue[queue.length - 1];
level += 1;
}
}
return -1;
}
const graph = {
a: ['b', 'c', 'd'],
b: ['e', 'f'],
d: ['e', 'g'],
c: ['j', 'k'],
e: ['l']
}
const res = breadthFirstSearch(graph, 'a', 'l');
console.log('res', res);