알고리즘/BOJ
[BOJ] 5639. 이진 검색 트리
재담
2022. 2. 25. 01:27
문제 원본 : https://www.acmicpc.net/problem/5639
5639번: 이진 검색 트리
트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다
www.acmicpc.net
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BST bst = new BST();
String str = "";
while((str = br.readLine()) != null) {
if (str.length() == 0) {
break;
}
bst.insert(Integer.valueOf(str));
}
bst.postOrder(bst.root);
bw.write(bst.builder.toString());
bw.close();
br.close();
}
static class Node {
public int value;
public Node left;
public Node right;
public Node(int value) {
this.value = value;
}
}
static class BST {
public Node root;
public StringBuilder builder = new StringBuilder();
public void insert(int value) {
if (root == null) {
root = new Node(value);
} else {
Node tmp = root;
Node parent;
while(true) {
parent = tmp;
if (value == parent.value) {
return;
} else if (value < parent.value) {
tmp = parent.left;
if (tmp == null) {
parent.left = new Node(value);
return;
}
} else {
tmp = parent.right;
if (tmp == null) {
parent.right = new Node(value);
return;
}
}
}
}
}
public void postOrder(Node node) {
if (node == null) {
return;
}
postOrder(node.left);
postOrder(node.right);
builder.append(node.value).append("\n");
}
}
}