广度优先搜索
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 现场工作专业课程和学生竞争性编程现场课程。