시작점부터 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하고 넘어가는 방법
.gif)
isVisit[idx] = true;void main() {
int[] numbers = {1, 2, 3, 4, 5};
boolean[] visit = {false, false, false, false, false};
dfs(numbers, 0, visit);
}
void DFS(int[] numbers, int idx, boolean[] visit) {
visit[idx] = true;
for(int i : numbers) {
if(!visit[i])
DFS(numbers, i, visit);
}
}
루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법

isVisit[idx] = true;void main() {
int[] numbers = {1, 2, 3, 4, 5};
boolean[] visit = {false, false, false, false, false};
BFS(numbers, 0, visit);
}
void BFS(int[] numbers, int start, boolean[] visit) {
Queue<Integer> queue = new LinkedList();
queue.add(start);
visit[start] = true;
while(!queue.isEmpty()) {
int next = queue.poll();
for(int i : numbers) {
if(!visit[i]) {
queue.add(i);
visit[i] = true;
}
}
}