μκ³ λ¦¬μ¦ λ¬Έμ μμ μ μΌ κΈ°μ΄κ° λλ DFS, BFS!!!
ν λλ§λ€ ν·κ°λ¦¬λ λΆλΆ μ€ νλμΈλ°μ. νμ€νκ² κΈ°μ΅νκ³ μΆμ΄μ μ 리ν΄λ΄
λλ€. π₯²
λ¨Όμ , μλμ κ°μλ₯Ό μ°Έκ³ νμ΅λλ€. μ νλΈμμ DFS, BFS in Java λΌκ³ μΉλ©΄ μ μΌ λ¨Όμ λμ€λ κ°μμ λλ€.
DFSλ μμ κ³Ό μ°κ²°λ λ
ΈλλΆν° νμνλ μκ³ λ¦¬μ¦μ
λλ€. νμ
μ μΆ λ°©μμΌλ‘ ꡬνν©λλ€. λ―Έν‘ν κ·Έλ¦Ό μ€λ ₯μΌλ‘ DFSλ₯Ό νΈλ¦¬ννλ‘ λνλ΄λ³Έλ€λ©΄!
μ΄λ¬ν μμλ‘ λ°©λ¬Έμ ν©λλ€.
public static void dfs(int node, boolean[] visited, StringBuilder sb) {
if(visited[node]) return;
visited[node] = true;
sb.append(node + " ");
for(int nextNode:nodeList[node]) {
dfs(nextNode, visited, sb);
}
}
BFSλ νμ λ
Έλλ₯Ό λ¨Όμ νμνλ μκ³ λ¦¬μ¦μ
λλ€. μ μ
μ μΆ λ°©μμΈ queueλ‘ κ΅¬νν©λλ€. BFSλ₯Ό νΈλ¦¬ννλ‘ λνλ΄λ³Έλ€λ©΄!
μ΄λ¬ν μμλ‘ λ°©λ¬Έμ ν©λλ€.
public static void bfs(int node, boolean[] visited, StringBuilder sb) {
Queue<Integer> queue = new LinkedList<Integer>();
queue.offer(node);
while(!queue.isEmpty()) {
node = queue.poll();
if(visited[node]) continue;
visited[node] = true;
sb.append(node + " ");
for(int nextNode:nodeList[node]) {
queue.add(nextNode);
}
}
}
μ΄ν΄κ° νλ°©μ λλ€μ π»