알고리즘 공부 중에 새롭게 알게 된 결정 깊이 우선 탐색에 대해 작성하였습니다.

트리나 그래프를 탐색하는 기법 중 하나로, 시작노드부터 자식 노드를 순서대로 탐색하는 방식입니다. 탐색 순서 결정 시 깊이를 우선시하며, 루트노드의 분기에서 다음 분기를 넘어갈 때 한쪽의 문기를 완벽하게(즉, 가장 깊은 곳까지) 탐색 후 넘어가는 방식입니다.
DFS는 주로 다음 방식들 중 하나를 사용하여 구현합니다.
그리고 다음의 순서로 노드를 탐색합니다.
DFS를 구현하는 두가지 방법 모두 위와 같은 순서로 처리됩니다. 다만 Stack을 명시적으로 사용하느냐, 스택 메모리를 활용하느냐의 차이가 있습니다.
반복 DFS의 경우 다음의 특징이 있습니다.
재귀 DFS의 경우 다음의 특징이 있습니다.

마찬가지로 트리나 그래프를 탐색하는 기법 중 하나로, 시작 노드부터 가까운 순서로 진행되며 점차 깊이 내려가는 방식입니다. 같은 깊이에 있는 노드들은 서로 인접하지 않아도 동일한 레이어로 간주합니다.
BFS는 구현시 다음 순서로 진행됩니다.
BFS는 구현시 다음의 특징을 가지고 있습니다.
일반적으로 DFS나 BFS는 서로 바꿔서 사용해도 해결되는 경우가 많습니다. 다만 사용하면 훨씬 빠르거나 보다 효율적인 상황들이 존재합니다.
DFS를 고려해야하는 경우는 다음과 같습니다.
BFS를 고려해얗하는 경우는 다음과 같습니다.
개인적인 느낌으로 미로 탐색하는 방법 중 오른손 법칙이랑 비슷하다는 생각이 듭니다. 한쪽으로만 쭉 향하다가 막히면 되돌아가고 이런식으로 진행한다는 점이 유사한 것 같습니다. 물론 DFS의 경우 전체를 탐색하게 된다는 등의 차이는 있지만 추후 유사한 문제에서 활용할 수 있지 않을까 생각이 듭니다. 읽어주셔서 감사합니다.
Depth First Search (DFS) with Explanation and Code
[알고리즘] 깊이 우선 탐색(DFS)이란
[알고리즘] DFS (Depth-First Search) : 깊이 우선 탐색 알고리즘이란?
반복과 재귀 : DFS 문제를 재귀로 구현하면 편리한 이유
파이썬 dfs 재귀 및 반복문 시간복잡도 관련 질문 드립니다.
DFS Recursive vs DFS Iterative [duplicate]
Breadth First Search
[알고리즘] 너비 우선 탐색(BFS)이란
What are the practical factors to consider when choosing between Depth-First Search (DFS) and Breadth-First Search (BFS)? [closed]
[알고리즘] 언제 BFS를, DFS를 써야할까?
DFS/BFS 개념 및 문제 접근 방법
PS를 하며 느끼는 DFS와 BFS 선택의 기준
자바로 알아보는 DFS와 BFS