图的深度广度优先遍历 | JS

深度优先:先访问根结点,然后对根结点没访问过的相邻节点挨个进行深度优先遍历

广度优先:新建一个队列,根结点入队,队头出队并且访问,把队头没访问过的相邻节点入队,重复中间步骤直到队列为空。

复制代码
 1 const graph = {
 2   0: [1, 2],
 3   1: [2],
 4   2: [0, 3],
 5   3: [3]
 6 }
 7 
 8 //深度优先遍历
 9 const visited = new Set();
10 const dfs = (n) => {
11   console.log(n);
12   visited.add(n);
13   graph[n].forEach(c => {
14     if(!visited.has(c)){
15       dfs(c);
16     }
17   })
18 }
19 dfs(2);
20 
21 //广度优先遍历
22 const visited = new Set();
23 visited.add(2);
24 const q = [2];
25 while(q.length) {
26   const n = q.shift();
27   console.log(n);
28   graph[n].forEach( c => {
29     if(!visited.has(c)){
30       q.push(c);
31       visited.add(c);
32     } 
33   })
34 }
复制代码

 

本文作者:oaoa

本文链接:https://www.cnblogs.com/oaoa/p/14851634.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   喵喵队立大功  阅读(130)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示