图是网络结构的抽象模型,是一组由边连接的节点
图可以表示任何二元关系
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)}})}
