# 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
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
← day18-路径总和 day20-克隆图 →