function BFS(G, s, t) {
  let visited = [];
  let q = [];
  visited.push(s);
  q.push(s);

  while(q.length !== 0) {
    let current = q.shift();
    if (current.equals(t)) {
      return t;
    }

    let adjacent = G.getAdjacentNodes(current);
    adjacent.forEach(function(node) {
      if (!visited.includes(node)) {
        visited.push(node);
        q.push(node);
      }
    });
  }
}