C++基础算法 | 广度优先搜索(Breadth First Search)
用途:
- 遍历树结构,level order
- 遍历图结构,BFS、Topological
- 遍历二维数组
BFS 的总体思路:
建立入度表,入度为 0 的节点先入队
当队列不为空,节点出队,标记学完课程数量的变量加 1,并记录该课程
将课程的邻居入度减 1
若邻居课程入度为 0,加入队列
用一个变量记录学完的课程数量,一个数组记录最终结果,简洁好理解。
总结
解决拓扑排序问题
根据依赖关系,构建邻接表、和入度数组
选取入度为 0 的数据,根据邻接表