BFS/DFS


BFS

private static void bfs(int input) {
		Queue<Integer> q = new LinkedList<Integer>();
        // 1. 처음 노드를 넣는다.
		q.offer(input);
		
        //2. 큐가 전체 다 빌동안
		while(!q.isEmpty()) {
        //3. 첫 노드를 꺼낸다
			int k = q.poll();
			visited[k] = true; // 4. 그 노드를 방문한다.
            // 이 노드의 child 노드를 전부돌면서
			for(int i = 0; i<arr[k].size();i++) { 
				if(!visited[arr[k].get(i)]) {
                // 방문하지 않았다면
				q.offer(arr[k].get(i)); // 넣고
				visited[i] = true; // 방문 체크한다.
				
			}
		}
	}

DFS

private static void dfs(int depth) {
	/*	if(종료조건) {
        	return;
        } */
        // 방문 체크
		visited_dfs[depth] = true;
		
        // 다음 노드들 하나씩 꺼내서 방문
		for(int i = 0; i<arr[depth].size();i++) {
			if(!visited_dfs[arr[depth].get(i)]) { // 방문 X 인경우
            // 자기 자신 호출
				dfs(arr[depth].get(i));
			}
		}
	}