图是网络结构的抽象模型,是一组由边连接的节点
图可以表示任何二元关系
JavaScript 用Object与Array构建图
图的表示法: 邻接矩阵、邻接表、关联矩阵
图的深度优先遍历
访问根节点
对根节点的没有访问过的相邻节点挨个进行深度优先遍历
const visited = new Set()
const dfs = (n) => {
console.log(n)
visited.add(n)
graph[n].foreach(c => {
if(!visited.has(c)) {
dfs(c)
}
})
}
广度优先遍历算法口诀
新建一个队列,根节点入队
把队头出队,并访问
把队头没有访问过的相邻节点入队
重复2,3步 知道队列为空
const visited = new Set()
visited.add(root)
const q = [root]
while(q.length) {
const n = q.shift()
console.log(n)
graph[n].foreach(c => {
if(!visited.has(c)) {
q.push(c)
visited.add(c)
}
})
}