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'))