본문 바로가기

알고리듬에 몸을 맡겨라!

깊이 우선탐색

 package main01;

import java.util.ArrayList;
import java.util.List;

public class Main {

    int[][] adj = {
            {1, 9},
            {0, 2, 3, 5, 7},
            {1, 3, 4, 5},
            {1, 2},
            {2},
            {1, 2, 6},
            {5},
            {1, 8, 9},
            {7},
            {0, 7}
    };

    List<Boolean> visited;

    public static void main(String[] args) {

        new Main().dfsAll();
    }

    void dfsAll() {
        visited = new ArrayList<>();
        for (int i = 0; i < adj.length; i++) {
            visited.add(false); // visited 모두 false로 초기화
        }

        // 모든 정점을 순회하면서, 아직 방문한 적 없으면 방문하기.
        for (int i = 0; i < adj.length; i++) {
            if (!visited.get(i)) {
                dfs(i);
            }
        }

//        for (int i = 0; i < visited.size(); i++) {
//            System.out.println(i + "");
//        }
    }

    void dfs(int here) {
        System.out.println("DFF visits " + here);

        visited.add(here, true);

        for (int i = 0; i < adj[here].length; i++) {
            int there = adj[here][i];

            // 아직 방문한 적이 없다면 방문한다.
            if (!visited.get(there)) {
                dfs(there);
            }
        }
    }
}

 

 

'알고리듬에 몸을 맡겨라!' 카테고리의 다른 글

문자열 검색 전체 알고리즘  (0) 2021.06.19
문자열 검색  (0) 2021.06.13
자바와 비트마스크, BitSet  (0) 2021.04.24
비트마스크 (2)  (0) 2021.04.23
비트마스크 (1)  (0) 2021.04.23