본문 바로가기

코테/알고리즘

[JAVA] DFS 재귀 호출 구현

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 방문

'코테 > 알고리즘' 카테고리의 다른 글

[JAVA] DFS Flood fill 구현  (0) 2021.07.28
[JAVA] BFS 최단거리 구현  (0) 2021.07.27
[JAVA] BFS 큐 구현  (0) 2021.07.26
[JAVA] DFS Stack 구현  (0) 2021.07.25