引用链接:https://blog.csdn.net/weixin_43955293/article/details/126445861深度优先搜索(DFS)和广度优先搜索(BFS)_深度优先搜索和广度优先搜索对比-CSDN博客
1、广度优先遍历(BFS)
1.1概念
广度优先搜索:又叫层次遍历,从上往下对每一层依次访问,在每一层中,从左往右(也可以从右往左)访问结点,访问完一层就进入下一层,直到没有结点可以访问为止。
广度优先搜索(也称宽度优先搜索,缩写BFS即即Breadth First Search)是连通图的一种遍历算法。这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和广度优先搜索类似的思想。
所采用的策略可概况为越早被访问到的顶点,其邻居顶点越早被访问。于是,从根顶点s的BFS搜索,将首先访问顶点s;再依次访问s所有尚未访问到的邻居;再按后者被访问的先后次序,逐个访问它们的邻居。一般用队列queue数据结构来辅助实现BFS算法。若将bfs策略应用于树结构,其效果等同与层次遍历。
常用于搜索最优值问题。
1.2代码
2、深度优先搜索遍历(DFS)
深度优先搜索:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。
2.1 遍历过程:
(1)从图中某个顶点v出发,访问v。
(2)找出刚才第一个被顶点访问的邻接点。访问该顶点。以这个顶点为新的顶点,重复此步骤,直到访问过的顶点没有未被访问过的顶点为止。
(3)返回到步骤(2)中的被顶点v访问的,且还没被访问的邻接点,找出该点的下一个未被访问的邻接点,访问该顶点。
(4)重复(2) (3) 直到每个点都被访问过,遍历结束。
若将bfs策略应用于树结构,其效果等同与前中后序遍历。