树 和 图
- 树是一种特殊的图,树是无环图
- 无向图是一种特殊的有向图,相当于加一条反向的边
- 所以下面只考虑有向图的情况
图的存储
邻接矩阵
- 开一个二维数组,数组中的一个元素g[a][b]存储a到b的权重
- 适合存储稠密图,否则会有很多浪费空间
邻接表
- 每个节点开一个单链表,用来存储它直接指向的点
- 单链表内部顺序无关紧要
- 插入节点关系时直接插入到单链表的头部
深度优先遍历
广度优先遍历
有向图的拓扑排序
- 图的宽搜的一个应用
- 并不是所有图都有拓扑序列,必须是有向无环图
- 拓扑排序可能不是唯一的