图的深度与广度优先遍历
Posted 沿着路走到底
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图的深度与广度优先遍历相关的知识,希望对你有一定的参考价值。
深度优先
访问根节点
对根节点的没访问过的相邻节点挨个进行深度优先遍历
广度优先
新建一个队列,把根节点入队
把队头出队并访问
把队头的没访问过的相邻节点入队
重复第二、三步,直到队列为空
const graph =
0: [1, 2],
1: [2],
2: [0, 3],
3: [3]
/*
深度优先
访问根节点
对根节点的没访问过的相邻节点挨个进行深度优先遍历
*/
const visited = new Set()
function dfs (n)
console.log(n)
visited.add(n)
graph[n].forEach(c =>
if(!visited.has(c))
dfs(c)
)
dfs(2)
/*
广度优先
新建一个队列,把根节点入队
把队头出队并访问
把队头的没访问过的相邻节点入队
重复第二、三步,直到队列为空
*/
function bfs (n)
const q = [n]
visited.add(n)
if(q.length)
const t = q.shift()
console.log(t)
graph[t].forEach(c =>
if(!visited.has(c))
q.push(c)
visited.add(c)
)
bfs(2)
1
以上是关于图的深度与广度优先遍历的主要内容,如果未能解决你的问题,请参考以下文章