首页 > Web开发 > 详细

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

时间:2021-06-05 11:14:41      阅读:19      评论:0      收藏:0      [点我收藏+]

技术分享图片

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

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

 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 }

 

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

原文:https://www.cnblogs.com/oaoa/p/14851634.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!