BFS is going to use more memory depending on the branching factor... however, BFS is a complete algorithm... meaning if you are using it to search for something in the lowest depth possible, BFS will give you the optimal solution.
BFS space complexity is O(b^d)
... the branching factor raised to the depth (can be A LOT of memory).
DFS on the other hand, is much better about space however it may find a suboptimal solution. Meaning, if you are just searching for a path from one vertex to another, you may find the suboptimal solution (and stop there) before you find the real shortest path. DFS space complexity is O(|V|)
... meaning that the most memory it can take up is the longest possible path.
They have the same time complexity.
In terms of implementation, BFS is usually implemented with Queue
, while DFS uses a Stack
.