数据结构 - 图
图是什么
- 图是网络结构的抽象模型,是一组由边连接的节点
- 图可以表示任何二元关系,比如道路,航班
图的表示法
-
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
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦

