小曹同学的百草园
首页
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

小曹同学

一个普通的前端开发
首页
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 数据结构

    • 简介
    • 栈
    • 队列
    • 链表
    • 集合
    • 字典
    • 树
    • 图
      • 图
        • 图的表示法
        • 深度优先遍历算法
        • 广度优先遍历
  • 前端算法
  • 数据结构
小曹同学
2022-02-20
目录

图

# 图

# 🆕简介

  • 图是网络结构的抽象模型,是一组由边链接的节点;

  • 图可以表示任何二元关系,比如道路和航班;

  • eg img:image-20220218101942581

# 图的表示法

# 邻接矩阵

image-20220218102106504

# 邻接表

image-20220218102200285

# 深度优先遍历算法

  1. 访问节点
  2. 对根节点的没访问过得相邻节点挨个进行深度优先遍历
const visited = new Set();

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

# 广度优先遍历

  1. 新建一个队列,入队根节点
  2. 把队头出队并访问
  3. 把队头没有访问过得相邻节点入队
  4. 重复二、三步,直到队列为空;
  5. image-20220218102947384
const visited = new Set();
const q = [2];
visited.add(2);
while(q.length) {
    const n = q.shift();
    console.log(n);
    graph[n].forEach( c => {
        if(!visited.has(c) {
             q.push(c)
             visited.add(c)
           })
    })
}
1
2
3
4
5
6
7
8
9
10
11
12
13
编辑 (opens new window)
上次更新: 2022/02/21, 05:57:00
树

← 树

最近更新
01
优雅代码书写之道
06-07
02
图片懒加载
05-05
03
项目部署
04-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式