图是网络结构的抽象模型,是一组由边连接的节点
    图可以表示任何二元关系
    JavaScript 用Object与Array构建图
    图的表示法: 邻接矩阵、邻接表、关联矩阵

    图的深度优先遍历
    访问根节点
    对根节点的没有访问过的相邻节点挨个进行深度优先遍历

    1. const visited = new Set()
    2. const dfs = (n) => {
    3. console.log(n)
    4. visited.add(n)
    5. graph[n].foreach(c => {
    6. if(!visited.has(c)) {
    7. dfs(c)
    8. }
    9. })
    10. }

    广度优先遍历算法口诀
    新建一个队列,根节点入队
    把队头出队,并访问
    把队头没有访问过的相邻节点入队
    重复2,3步 知道队列为空

    1. const visited = new Set()
    2. visited.add(root)
    3. const q = [root]
    4. while(q.length) {
    5. const n = q.shift()
    6. console.log(n)
    7. graph[n].foreach(c => {
    8. if(!visited.has(c)) {
    9. q.push(c)
    10. visited.add(c)
    11. }
    12. })
    13. }