# day19-使用JavaScript实现图的深度优先和广度优先遍历

const graph = {
  "A": ['B', 'C'],
  'B': ['D', 'E'],
  'C': ['F', 'G'],
  'D': [],
  'E': [],
  'F': [],
  'G': [],
}
1
2
3
4
5
6
7
8
9

深度优先

function dfsGraph(graph,start) {
  const visited = new Set();

  function dfs(node) {
    if (visited.has(node)) return;
    visited.add(node);
    for (const neihbor of graph[node]) {
      dfs(neihbor)
    }
  }
  dfs(start)
  return visited;
}

// const arr = dfsGraph(graph, 'A')
// console.log(arr, 'arr')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

广度优先

function bfsGraph(graph, start) {
  const visited = new Set();
  const queue = [start];
  while (queue.length) {
    const node = queue.shift();
    if (visited.has(node)) continue;
    visited.add(node)
    const neihborArr = graph[node];
    queue.push(...neihborArr);
  }
  return visited
}
const arr = bfsGraph(graph, 'A')
console.log(arr, 'arr')
1
2
3
4
5
6
7
8
9
10
11
12
13
14