数据结构:图的基本知识
由于图在面试里相对问的少,所以我先花了一点时间大致了解了一下基本知识
图常用于表示多对多的关系
包含:一组顶点(V)和一组边(W)
抽象数据类型定义:
两种常用在程序里表示图的方式:
邻接矩阵,邻接表
邻接矩阵:
如果有连接就是1
特点:对角线为0,对称
于是发现有一半空间是重复的
可以变二维矩阵为1维数组
怎样计算新的数组下标,相对不是很困难
邻接矩阵的好处:
- 直观
- 方便检查任意一对顶点是否存在边(查对应的数)
- 方便找任一顶点的所有邻接点(遍历它的行)
- 方便计算度(出发的边数和指向的边数)
- 总的来说适合放稠密图
邻接矩阵的缺点:
- 对于稀疏图(点多边少)有大量无效元素
- 统计稀疏图的边浪费时间
邻接表:
用指针数组表示,把有的边都写出来
- 方便找邻接点
- 对于稀疏图节省空间(N个头指针,2E个节点)
- 对于无向图方便计算度,有向图则不好搞
- 不方便检查任意一对顶点是否有边
------------------------------
接下来是遍历:
深度优先搜索 DFS
广度优先搜索
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步