深度优先遍历口诀
访问根节点
对根节点的没有访问过的相邻节点挨个进行深度优先遍历
// 深度优先遍历口诀// 访问根节点// 对根节点的没有访问过的相邻节点挨个进行深度优先遍历const graph = {0: [1, 2],1: [2],2: [0, 3],3: [3]}// 深度优先遍历// 记录哪些节点访问过// const visited = new Set()// const dfs = (n) => {// console.log(n); // 2 0 1 3// // 对没有访问的深度优先遍历// visited.add(n);// graph[n].forEach((c) => {// if(!visited.has(c)) {// dfs(c)// }// })// }// dfs(2);// 广度优先遍历// 新建一个队列,把根节点入队// 把队头出队并访问// 把队头的没访问过的相邻节点入队// 重读2,3,直到队列为空const visited = new Set()const q = [2];visited.add(2);while(q.length) {const n = q.shift();console.log(n);graph[n].forEach((c) => {if(!visited.has(c)) {q.push(c);visited.add(c);}})}
