BFS
图在BFS时,我们从第一个要搜索的节点出发,依次找相邻的节点遍历,遍历过的节点则标记1即可,因为图存在回路,所以我们在遍历时可能会遍历到已经遍历过的节点
用bool visited[Maxsize];
来表示标记数组,初始为false,访问过为true
如果用邻接矩阵存储,则对应的BFS都是按照顺序的,因为邻接矩阵有顺序,如果是邻接表,则有可能不是按照顺序,而是按照表的指针来存
但是上述代码如果是非连通图,则无法实现
所以我们对于每个没被访问过的顶点都进行BFS
所以,对于无向图来说,BFS调用次数为连通分量数
广度优先生成树的BFS实际上就是树的层次遍历
即对两个图进行广度优先生成树的生成
DFS
图的DFS和树的先根遍历很像,先从根节点出发,若一个节点有子树,则不断访问他的子树的节点进行递归,否则就返回上一层找他的另一个儿子递归,再没有就继续返回上一层,依次类推
根据邻接矩阵求DFS遍历序列:先自己定义开始的节点是哪一个,然后找那个节点对应的行,若某个节点值为1,且没有被访问过,则在遍历序列那边写上其节点,并且跳到那个节点对应的序列进行递归即可
深度优先生成树:根据DFS画出来即可,生成森林也差不多