核心认知
图是一种比链表和树更自由的数据结构。 它由两部分组成:- 节点
- 边
图论题真正难在哪
图论题的难点经常不是算法名,而是建图。 你要先回答:- 谁是节点
- 谁和谁之间有边
- 这条边有没有方向
- 这条边有没有权重
常见存储方式
图的两种经典表示方式是:- 邻接矩阵
- 邻接表
一个最基础的 Python 例子
图论题入门最常见的就是 DFS。visited。只要图里可能有环,就一定要警惕重复访问。
图和树的区别
树其实可以看作一种特殊的图。 和树相比,图更复杂的地方在于:- 可能有环
- 可能不止一个入口
- 节点之间的关系不一定是层级型
- 需不需要去重
- 会不会走回头路
常见题型
图论题经常会出现这些方向:- DFS / BFS 遍历
- 连通性问题
- 拓扑排序
- 最短路径
- 最小生成树
- 并查集
最短路径为什么重要
只要题目在问:- 最少走几步
- 最小代价是多少
在带权图里,常见会用到 Dijkstra。
学习建议
建议按这个顺序练:- 图的 DFS 和 BFS
- 岛屿问题
- 拓扑排序
- 并查集
- 最短路径

