DFS : 깊이 우선 탐색

BFS : 너비 우선 탐색

DFS와 BFS의 차이점

탐색 순서

DFS : 한 경로를 따라서 최대한 들어가, 더 이상 갈 곳이 없을 때까지 탐색!!(25번 문제에 해당)

BFS : 한 노드에서 시작하여 인접 모든 노드를 먼저 탐색한 후, 그 다음 단계의 노드로 이동

즉, 한 레벨씩 탐색을 진행한다.

탐색 속도

DFS : 한 경로를 따라 깊이 우선적으로 탐색하기 때문에, 최악의 경우에는 모든 노드를 한 경로로 따라가게 될 수 있다.

따라서 트리의 깊이가 매우 깊은 경우에는 DFS가 더 많은 시간이 걸릴 수 있다.

BFS : 레벨별로 탐색한다. → 최단 경로에 적합!. 일반적으로 DFS보다는 시간이 더 걸리지만, 최단 경로를 보장한다.

메모리 사용

DFS : 스택을 사용하여 탐색 경로를 저장한다. → 메모리 사용량이 적다.

그러나 트리의 깊이가 매우 깊다면, stack overflow 발생