📜  BFS和DFS之间的区别

📅  最后修改于: 2021-04-24 21:36:54             🧑  作者: Mango

广度优先搜索

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,以了解二进制树遍历的区别。