flowchart TD
A[Enter node] --> B[Mark visited]
B --> C{Target}
C -- Yes --> D[Return success]
C -- No --> E[Iterate neighbors]
E --> F{Neighbor unvisited}
F -- Yes --> G[Recursive call push stack]
F -- No --> H[Continue]
G --> I{Need backtrack}
I -- Yes --> J[Unchoose state]
I -- No --> E
J --> E
H --> E
# [DFS 템플릿: 아키텍트 버전]# Use Case: 경로 탐색, 사이클 검출, 연결 요소 찾기# Components: Stack (LIFO) 또는 재귀# Constraint: 백트래킹 시 방문 해제 필요한 경우 있음# [DFS 재귀 버전]defdfs_recursive(node,graph,visited=None,target=None):# 1. 초기화 (Initialization Layer)# - 방문 집합 생성 (최초 호출 시)ifvisitedisNone:visited=set()# 2. 방문 처리 (Visit Layer)visited.add(node)# 3. 비즈니스 로직 (Core Logic)# - 목표 발견 시 조기 종료iftargetandnode==target:returnTrue# 4. 재귀 확장 (Recursive Expansion)# - 인접 노드로 깊이 우선 탐색forneighboringraph[node]:ifneighbornotinvisited:ifdfs_recursive(neighbor,graph,visited,target):returnTruereturnFalse