📜  BFS和DFS的区别

📅  最后修改于: 2021-09-11 03:47:18             🧑  作者: Mango

广度优先搜索

BFS代表广度优先搜索是一种基于顶点的技术,用于在图中寻找最短路径。它使用先进先出的队列数据结构。在 BFS 中,每次访问一个顶点并标记它时选择一个顶点,然后访问它的相邻顶点并存储在队列中。它比 DFS 慢。
前任-

A
       / \
      B   C
     /   / \
    D   E   F

输出是:

A, B, C, D, E, F

深度优先搜索

DFS代表深度优先搜索是一种基于边缘的技术。它使用堆栈数据结构,执行两个阶段,首先将访问过的顶点压入堆栈,然后如果没有顶点则弹出访问过的顶点。
前任-

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 以了解二叉树遍历的差异。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。