알고리즘
백준 5639번 이진 검색 트리 (JAVA)
박카스마시며코딩
2023. 5. 21. 11:40
https://www.acmicpc.net/problem/5639
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
저는 재귀를 통해 문제를 해결하였습니다.
먼저 루트값이 나오게 되고, 이후 이 루트값보다 낮다면 왼쪽, 높다면 오른쪽에 존재하기 때문에 이 기준으로 둘을 나누고, 현재 값을 출력해 나가면서 문제를 해결하였습니다.
package BOJ.etc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ_5639 {
private static final int MAX_SIZE = 10_000;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] input = new int[MAX_SIZE+1];
int index = 0;
String str;
while(true){
str = br.readLine();
if(str == null || str.equals("")){
break;
}
input[index++] = Integer.parseInt(str);
}
postOrder(0,index-1,input);
}
private static void postOrder(int start, int end, int[] input) {
// System.out.println(start+" "+end);
if(start > end){
return ;
}
int value = input[start];
int index = start+1;
while(index <= end){
if(input[index] < value){
index++;
}else{
break;
}
}
postOrder(start+1,index-1,input);
postOrder(index,end,input);
System.out.println(value);
}
}