js中用Object 和 Array来表示图
图的表示法: 邻接矩阵、邻接表、关联矩阵…
邻接矩阵
邻接表
深度优先遍历
没有访问过的相邻节点
进行深度优先遍历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(item => { if (!visited.has(item)) { dfs(item) } }); } dfs(2) // 2 0 1 3
广度优先遍历
没有访问过的相邻节点
入队const visited = new Set(); const bfs = (n) => { const queue = [n]; visited.add(n); while (queue.length) { const o = queue.shift(); console.log(o); graph[o].forEach(item => { if (!visited.has(item)) { visited.add(item); queue.push(item); } }); } } bfs(2) // 2 0 3 1