전공공부
[BOJ_5639] 이진 검색 트리 본문
설명
어떻게 풀지만 정하고 제대로 나아갔으면 쉽게 풀었을텐데 배열의 형태로 자꾸 구현하려고 하니 막혔다. 하지만, 다른 사람들의 풀이법을 알고보니 LinkedList 형태로 풀면 정말 쉽게 풀 수 있는 것이다... 그래서 아래와 같은 형태로 구현하고 진행하면 되는 형태였는데 사실 이건 풀이법을 어떻게 구현할지를 떠올리는 것이 문제의 대부분을 차지 할 것 같다.
조금 쉬운 문제였는데 스스로 풀지 못해서 아쉽다.
+) 구현에 도움을 준 블로그
[백준] 5639번: 이진 검색 트리 - JAVA
🔗 문제 링크 BOJ 5639번: 이진 검색 트리 1️⃣ 트리 직접 그리기 📝 풀이 과정 전위 순회의 경우 처음 탐색한 값이 항상 root이기 때문에 먼저 처음 값을 root로 설정해 주었다. 이후 반복문을 돌며
girawhale.tistory.com
코드
package tree;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class BOJ_5639 {
static class Node {
int num;
Node left, right;
Node(int num) {
this.num = num;
}
Node(int num, Node left, Node right) {
this.num = num;
this.left = left;
this.right = right;
}
public void insert(int val) {
if(val < this.num){
if(this.left == null){
left = new Node(val);
}else{
left.insert(val);
}
}
else if(val > this.num){
if(this.right == null){
right = new Node(val);
}else{
right.insert(val);
}
}
}
}
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Node root = new Node(Integer.parseInt(in.readLine()));
String input;
while (true) {
try{
input = in.readLine();
root.insert(Integer.parseInt(input));
}catch(Exception e){
break;
}
}
postOrder(root);
}
private static void postOrder(Node root) {
if(root != null){
postOrder(root.left);
postOrder(root.right);
System.out.println(root.num);
}
}
}
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
'Study > Problem Solving' 카테고리의 다른 글
[BOJ_17073] 나무 위에 빗물 (1) | 2023.12.19 |
---|---|
[BOJ_20924] 트리의 기둥과 가지 (0) | 2023.12.19 |
[BOJ_1068] 트리 (0) | 2023.12.16 |
[BOJ_14675] 단절점과 단절선 (0) | 2023.12.16 |
[BOJ_11725] 트리의 부모 찾기 (1) | 2023.12.11 |