BFS graph adjacent matrix
BFS traversal of undirected graph
by Alex Myronov
JavaScript
const network = {
'Min' : ['William', 'Jayden', 'Omar'],
'William' : ['Min', 'Noam'],
'Jayden' : ['Min', 'Amelia', 'Ren', 'Noam'],
'Ren' : ['Jayden', 'Omar'],
'Amelia' : ['Jayden', 'Adam', 'Miguel'],
'Adam' : ['Amelia', 'Miguel', 'Sofia', 'Lucas'],
'Miguel' : ['Amelia', 'Adam', 'Liam', 'Nathan']
}
const printPath = (pathObj, last) => {
const pathArr = []
let curr = last
while (curr) {
pathArr.push(curr)
curr = pathObj[curr]
}
return pathArr.reverse()
}
const getPath = (start, end) => {
const queue = [start]
const visited = { [start]: null }
while (queue.length) {
const node = queue.shift()
const neighbors = network[node]
for (let i = 0; i < neighbors.length; i++) {
const neighbor = neighbors[i]
if (!visited.hasOwnProperty(neighbor)) {
visited[neighbor] = node
queue.push(neighbor)
}
if (end === neighbor) {
return printPath(visited, end)
}
}
}
return null
}
console.log(getPath('Jayden', 'Adam'))