数据结构之“图”

  • 图是什么
  • 图的常用操作
  • 图的深度/广度优先遍历
    • 什么是深度/广度优先遍历
    • 深度优先遍历算法口诀
    • 广度优先遍历算法口诀
  • LeetCode:65.有效数字
  • LeetCode:417.太平洋大西洋水流问题
  • LeetCode:133.克隆图
  • 思考题

图是什么

  • 图是网络结构的抽象模型,是一组由边连接的节点
  • 图可以表示任何二元关系,比如道路、航班…

.

  • JS中没有图,但是可以用Object和Array构建图
  • 图的表示法:邻接矩阵、邻接表、关联矩阵…

图的常用操作

深度优先遍历
广度优先遍历

图的深度/广度优先遍历

const graph = {0: [1, 2],1: [2],2: [0, 3],3: [3]
};module.exports = graph;

什么是深度/广度优先遍历

深度优先遍历:尽可能深的搜索图的分支
广度优先遍历:先访问离根节点最近的节点

深度优先遍历算法口诀


没访问过的防止陷入死循环

const graph = require('./graph');const visited = new Set();
const dfs = (n) => {console.log(n);visited.add(n);graph[n].forEach(c => {if(!visited.has(c)){dfs(c);}});
};dfs(2);

广度优先遍历算法口诀

新建一个队列,把根节点入队
把队头出队并访问
把队头的没访问过的相邻节点入队
重复第二、三步,直到队列为空

const graph = require('./graph');const visited = new Set();
visited.add(2);
const q = [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);}});
}

LeetCode:65.有效数字






时间复杂度O(n),n为字符串长度,空间复杂度为O(1)

LeetCode:417.太平洋大西洋水流问题





时间复杂度O(m * n),空间复杂度 O(m * n)

LeetCode:133.克隆图



法一:深度优先遍历

时间复杂度O(n),n为图的节点数,空间复杂度O(n)
法二:广度优先遍历

时间复杂度O(n),空间复杂度O(n)

思考题

1、请用图画出你的朋友圈,无需Coding
2、请用图画出你的偶像的人物关系,无需Coding

(九)数据结构之“图”相关推荐

  1. 数据结构之图的创建(邻接表)

    数据结构之图的基本概念中了解了图的基本概念,接下来对图的代码实现进行详解. 邻接无向图 1. 邻接表无向图介绍 邻接表无向图是指通过邻接表表示的无向图. 上面的图G1包含了"A,B,C,D, ...

  2. 八十五、Python | Leetcode数据结构之图和动态规划算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  3. python深度优先_python数据结构之图深度优先和广度优先实例详解

    本文实例讲述了python数据结构之图深度优先和广度优先用法.分享给大家供大家参考.具体如下: 首先有一个概念:回溯 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到 ...

  4. 数据结构之图的应用:有向无环图

    数据结构之图的应用:有向无环图 思维导图: 有向无环图:(DAG) 解题方法: 例: 思维导图: 有向无环图:(DAG) 解题方法: 例: PS: 当运算顺序不唯一时,最后的有向无环图也不唯一.

  5. 九张 Gif 图回顾 Web 设计的 25 年历史

    原文出处: fastcodesign   译文出处:码农网 – 小峰 Froont,一家为web设计师制作工具的旧金山公司,用9个GIF格式动画来表现网页设计在过去25年的发展历程.如果你想知道为什么 ...

  6. 【恋上数据结构】图基础知识介绍

    图 数据结构回顾 图(Graph) 有向图(Directed Graph) 出度.入度 无向图(Undirected Graph) 混合图(Mixed Graph) 简单图.多重图 无向完全图(Und ...

  7. 【数据结构】图(最短路径Dijkstra算法)的JAVA代码实现

    最短路径的概念 最短路径的问题是比较典型的应用问题.在图中,确定了起始点和终点之后,一般情况下都可以有很多条路径来连接两者.而边或弧的权值最小的那一条路径就称为两点之间的最短路径,路径上的第一个顶点为 ...

  8. 大一新生必看,自学必看,里昂详解数据结构之图

    数据结构之图 有幸掌握浅薄知识,不吝分享,保持独立思考,自主学习,共同进步.另求关注,点赞,评论,感谢!(tips:主页有数据结构全部知识点,以及知识点讲解,建立完善的数据结构知识体) 核心算法思想 ...

  9. 数据结构之图:邻接矩阵和邻接表、深度优先遍历和广度优先遍历

    简介 线性表是一种线性结构,除了头结点和尾节点,线性表的每个元素都只有一个前取节点和一个后继节点.而树结构则相较于线性表更加复杂,它描述的关系为数据元素之间的父子关系,也是现实世界父子关系的缩影, 一 ...

最新文章

  1. 新一代人工智能白皮书(2020年) ——产业智能化升级
  2. 她说要介绍10000个开源项目?来!我们一起监督!
  3. PHP serialize JSON 解析
  4. 【WPF】使用 XAML 的 Trigger 系统实现三态按钮
  5. MATLAB随机模拟
  6. 在overleaf中使用中文
  7. 设备名称和设备责任人输出写反了,重新写了,重新发送邮箱
  8. 物联网平台之争 巨头竞合并存
  9. 面试小题,传入6返回9,传入9返回6
  10. 阵列信号处理知识点合集
  11. R语言绘图的配色——ggsci
  12. WPS word解决公式上浮的问题
  13. JAVA高级架构师视频课程
  14. 谢特——后缀数组+tire 树
  15. 清除当前目录下的.svn文件 linux/windows
  16. 多节点+内核文件接口
  17. 百度智能小程序注册流程
  18. 微信小程序样式 WXSS
  19. 极智AI | 谈谈几种量化策略:MinMax、KLD、ADMM、EQ
  20. QT命令行编译时出现'mingw32-make'不是内部或外部命令,也不是可运行的程序或批处理文件

热门文章

  1. Java设计模式之策略模式---写的比较有趣,推荐大家看看
  2. python中的多线程----以2个线程卖票为例
  3. 剑指offer 最小的k个数
  4. Scrapy定向爬虫教程(三)——爬取多个页面
  5. SpringCloud底层原理
  6. Redis的架构模式
  7. 爱奇艺深度语义表示学习的探索与实践
  8. Feature Tools:可自动构造机器学习特征的Python库
  9. jvm系列(三):GC算法 垃圾收集器
  10. 第九次psp例行报告