[백준] 16652 Binary tree - Java
이진트리니까 트리를 입력받을 때 노드 클래스를 이용해 left와 right를 설정해 주는 방법으로도 풀 수 있지만
간단하게 그래프로 바라보고 풀었다.
dfs를 돌리며 높이를 적당히 조절해 주면 된다.
import java.util.*;
import java.io.*;
import java.math.*;
public class Main {
static int root;
static ArrayList<Integer>[] list;
static int N;
static boolean visit[];
static int[] arr;
static int cnt;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new int[N + 1];
list = new ArrayList[N + 1];
visit = new boolean[N + 1];
for(int i=0; i<N+1; i++){
list[i] = new ArrayList<>();
}
for(int i=1; i<N+1; i++){
int tmp = Integer.parseInt(br.readLine());
if(tmp == -1){
root = i;
continue;
}
list[i].add(tmp);
list[tmp].add(i);
}
dfs(root);
for(int i=1; i<N+1; i++){
System.out.println(arr[i]);
}
}
static void dfs(int node){
visit[node] = true;
arr[node] = cnt;
cnt++;
for(int k : list[node]){
if(!visit[k]){
dfs(k);
cnt--;
}
}
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 16235 나무 재테크 - Java (0) | 2022.08.13 |
---|---|
[백준] 25417 고속의 숫자 탐색 - Java (0) | 2022.08.07 |
[백준] 16652 Email Destruction - Java (0) | 2022.08.06 |
[백준] 10895 Great Pow! - Java (0) | 2022.08.05 |
[백준] 2146 다리 만들기 - Java (0) | 2022.07.31 |
댓글
이 글 공유하기
다른 글
-
[백준] 16235 나무 재테크 - Java
[백준] 16235 나무 재테크 - Java
2022.08.13 -
[백준] 25417 고속의 숫자 탐색 - Java
[백준] 25417 고속의 숫자 탐색 - Java
2022.08.07 -
[백준] 16652 Email Destruction - Java
[백준] 16652 Email Destruction - Java
2022.08.06 -
[백준] 10895 Great Pow! - Java
[백준] 10895 Great Pow! - Java
2022.08.05