import java.util.LinkedList;
import java.util.Queue;
public class Main {
// 그래프를 인접 리스트로 표현
private static List<List<Integer>> graph;
private static boolean[] visited;
public static void main(String[] args) {
// 예제 그래프 초기화 (0번부터 8번까지의 노드)
int n = 9;
graph = new ArrayList<>();
for (int i = 0; i < n; i++) {
graph.add(new ArrayList<>());
}
// 간선 추가 (양방향)
addEdge(0, 1);
addEdge(0, 2);
addEdge(1, 3);
addEdge(1, 4);
addEdge(2, 5);
addEdge(2, 6);
addEdge(3, 7);
addEdge(4, 8);
bfs(0);
}
// 그래프에 간선 추가 (양방향)
private static void addEdge(int u, int v) {
graph.get(u).add(v);
graph.get(v).add(u);
}
public static void bfs(int start) {
Queue<Integer> queue = new LinkedList<>();
boolean[] visited = new boolean[graph.size()];
StringBuilder sb = new StringBuilder();
// 시작 노드 처리
queue.offer(start);
visited[start] = true;
while (!queue.isEmpty()) {
int current = queue.poll();
sb.append(current + " ");
// 현재 노드의 인접 노드들을 큐에 추가
for (int neighbor : graph.get(current)) {
if (!visited[neighbor]) {
queue.offer(neighbor);
visited[neighbor] = true;
}
}
}
System.out.println(sb.toString());
}
}
728x90
'Java' 카테고리의 다른 글
[Java] Comparator, CompareTo, thenComparing (0) | 2025.04.28 |
---|---|
[Java] DFS (0) | 2025.04.26 |
[Java] StringBuilder (0) | 2025.04.25 |
[Java] ProcessBuilder (0) | 2025.03.25 |
[Spring] NoArgsConstructor / AllArgsConstructor (0) | 2025.01.25 |