数据结构:图的基本知识

由于图在面试里相对问的少,所以我先花了一点时间大致了解了一下基本知识

 

图常用于表示多对多的关系

包含:一组顶点(V)和一组边(W)

 

抽象数据类型定义:

 

 

两种常用在程序里表示图的方式:

邻接矩阵,邻接表

 

邻接矩阵:

 

 如果有连接就是1

特点:对角线为0,对称

 

于是发现有一半空间是重复的

可以变二维矩阵为1维数组

 

 

怎样计算新的数组下标,相对不是很困难

 

邻接矩阵的好处:

  • 直观
  • 方便检查任意一对顶点是否存在边(查对应的数)
  • 方便找任一顶点的所有邻接点(遍历它的行)
  • 方便计算度(出发的边数和指向的边数)
  • 总的来说适合放稠密图

邻接矩阵的缺点:

  • 对于稀疏图(点多边少)有大量无效元素
  • 统计稀疏图的边浪费时间

 

邻接表:

用指针数组表示,把有的边都写出来

 

 

  • 方便找邻接点
  • 对于稀疏图节省空间(N个头指针,2E个节点)
  • 对于无向图方便计算度,有向图则不好搞
  • 不方便检查任意一对顶点是否有边

 

------------------------------

接下来是遍历:

深度优先搜索 DFS

 

 

广度优先搜索

 

posted @ 2021-03-08 10:58  将来的事  阅读(59)  评论(0编辑  收藏  举报