1.深度优先遍历:
算法口诀:
1.访问根节点。
2.对根节点的没访问过的相邻节点挨个进行深度优先遍历。
实例:
const graph = {
0: [1,2],
1: [2],
2:[0,3],
3: [3]
}
const visited = new Set();
const dfs = (n) => {
console.log(n);
visited.add(n);
graph[n].forEach(c=> {
if(!visited.has(c)) {
dfs(c);
}
})
}
dfs(2);
2.广度优先遍历:
算法口诀:
1.新建一个队列,把根节点入队。
2.把队头出队并访问。
3.把队头的没访问过的相邻节点挨个入队。
4.重复第二、三步,直到队列为空。
实例:
const graph = {
0: [1,2],
1: [2],
2:[0,3],
3: [3]
}
const visited = new Set();
visited.add(2);
const q = [2];
while (q.length) {
const n = q.shift();
graph[n].forEach(c=> {
if(!visited.has(c)) {
q.push(c);
visited.add(c);
}
})
}