import java.util.*;
class Solution {
/**
*
* @param n - 노드의 수
* @param graph - 노드간의 간선이 표현된 그래프
*/
@Test
public void solution() {
int n = 5;
int[][] graph = new int[5][6];
graph[0][1] = graph[1][0]= 1;
graph[0][2] = graph[2][0] = 1;
graph[1][3] = graph[3][1] = 1;
graph[1][4] = graph[4][1] = 1;
graph[2][4] = graph[4][2] = 1;
graph[3][4] = graph[4][3] = 1;
dfs(0, graph, new boolean[5]);
}
public void dfs(int currentNode, int[][] graph, boolean[] visited) {
visited[currentNode] = true;
System.out.println(currentNode + " 방문");
for(int next = 0; next < 5; next++) {
if(visited[next] == false && graph[currentNode][next] != 0) {
dfs(next, graph, visited);
}
}
}
}
결과
0 방문
1 방문
3 방문
4 방문
2 방문