[Java] 이진 트리 클래스
이진 트리 구조 만들기를 참고하여 코드를 작성했다.
searchNode
에서 node에 저장된 data와 입력값으로 주어진 data를 비교하여 left
or right
로 나누어서 저장.node.left
or node.right
의 null 체크 후 new Node(data)
를 할당해준다.import java.util.*;
import java.io.*;
class Node {
int data;
Node left, right;
Node(int data) {
this.data = data;
}
}
class Tree {
Node root;
void createNode(int data) {
if (root == null) {
root = new Node(data);
} else {
searchNode(root, data);
}
}
void searchNode(Node node, int data) {
if (node.data > data) {
if (node.left == null) {
node.left = new Node(data);
} else {
searchNode(node.left, data);
}
} else {
if (node.right == null) {
node.right = new Node(data);
} else {
searchNode(node.right, data);
}
}
}
void postOrder(Node node) {
if (node != null) {
postOrder(node.left);
postOrder(node.right);
System.out.println(node.data);
}
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Tree tree = new Tree();
String input;
while ((input = br.readLine()) != null && !input.isEmpty()) {
int data = Integer.parseInt(input);
tree.createNode(data);
}
tree.postOrder(tree.root);
}
}