广度优先搜索
BFS代表“广度优先搜索”是一种基于顶点的技术,用于在图形中查找最短路径。它使用先进先出的Queue数据结构。在BFS中,一次顶点被选中并被标记,然后相邻的顶点被访问并存储在队列中。它比DFS慢。
前任-
A
/ \
B C
/ / \
D E F
输出为:
A, B, C, D, E, F
深度优先搜索
DFS代表“深度优先搜索”是一种基于边缘的技术。它使用Stack数据结构,执行两个阶段,首先将访问的顶点推入堆栈,然后如果没有顶点,则弹出访问的顶点。
前任-
A
/ \
B C
/ / \
D E F
输出为:
A, B, D, C, E, F
BFS与DFS
S.NO | BFS | DFS | |||
---|---|---|---|---|---|
1. | BFS stands for Breadth First Search. | DFS stands for Depth First Search. | |||
2. | BFS(Breadth First Search) uses Queue data structure for finding the shortest path. | DFS(Depth First Search) uses Stack data structure. | |||
3. | BFS can be used to find single source shortest path in an unweighted graph, because in BFS, we reach a vertex with minimum number of edges from a source vertex. | In DFS, we might traverse through more edges to reach a destination vertex from a source. | |||
3. | BFS is more suitable for searching vertices which are closer to the given source. | DFS is more suitable when there are solutions away from source. | |||
4. | BFS considers all neighbors first and therefore not suitable for decision making trees used in games or puzzles. | DFS is more suitable for game or puzzle problems. We make a decision, then explore all paths through this decision. And if this decision leads to win situation, we stop. | 5. | The Time complexity of BFS is O(V + E) when Adjacency List is used and O(V^2) when Adjacency Matrix is used, where V stands for vertices and E stands for edges. | The Time complexity of DFS is also O(V + E) when Adjacency List is used and O(V^2) when Adjacency Matrix is used, where V stands for vertices and E stands for edges. |
另请参阅二进制树的BFS与DFS,以了解二进制树遍历的区别。