BFS/DFS
1228 ワード
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));
}
}
}
Reference
この問題について(BFS/DFS), 我々は、より多くの情報をここで見つけました https://velog.io/@jellyb3ar/BFS-DFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol