![[BOJ 5639] 이진 검색 트리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5mOvW%2FbtslvJEQWbQ%2FLHEEqGiSUlKd8GjaZjdWz1%2Fimg.png)

[BOJ 5639] 이진 검색 트리알고리즘/트리2023. 6. 26. 15:58
Table of Contents
반응형
문제 링크
https://www.acmicpc.net/problem/5639
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
문제 풀이
- 정적 클래스를 정의하여 주어진 입력값을 이진 검색 트리(전위 순회) 방식으로 정의
- 이전에 풀었던 트리 순회와 동일하게 재귀 함수 사용하여 후위 순회 구할 수 있도록 함
- 노드의 최대 개수는 10^4 이고, 각 노드 별로 최대 2번 재귀를 호출할 때 O(2 * 10^4) 시간 복잡도 소요
참고
https://dev-ljw1126.tistory.com/248
[BOJ 1991] 트리 순회
문제 링크 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자
dev-ljw1126.tistory.com
제출 코드
import java.util.*;
import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
static Node ROOT;
static class Node {
int value;
Node left;
Node right;
public Node(int _value) {
this.value = _value;
}
public void insert(int _value) {
if(this.value > _value) {
if(this.left == null) this.left = new Node(_value);
else this.left.insert(_value);
} else {
if(this.right == null) this.right = new Node(_value);
else this.right.insert(_value);
}
}
}
static void input() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true) {
String input = br.readLine();
if(input == null || "".equals(input)) break;
int value = Integer.parseInt(input);
if(ROOT == null) ROOT = new Node(value);
else ROOT.insert(value);
}
br.close();
}
// 후위 순회 - 왼쪽 오른쪽 부모
static void postorder(Node node) {
if(node == null) return;
postorder(node.left);
postorder(node.right);
sb.append(node.value).append("\n");
}
static void pro() {
postorder(ROOT);
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
input();
pro();
}
}
반응형
'알고리즘 > 트리' 카테고리의 다른 글
[BOJ 9489] 사촌 (Java, 트리) (0) | 2023.06.26 |
---|---|
[BOJ 3584] 가장 가까운 공통 조상 (Java, DFS, LCA) (0) | 2023.06.26 |
[BOJ 20364] 부동산 다툼 (Java, Tree) (0) | 2023.06.26 |
[BOJ 15900] 나무 탈출 (Java, DFS, Tree) (0) | 2023.06.26 |
[BOJ 1991] 트리 순회 (0) | 2023.06.26 |

@leejinwoo1126 :: 천천히 하나씩
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!