1 minute read

문제 링크

문제 풀이 방식

  • 이진 트리와 이진 트리 탐색을 구현하면 된다.
  • 비교 연산자 오류 못잡아서 쫌 헤맸음. 데이터 비교할때는 == 이거 말고 equals() 써주는거 잊지 말자

문제 풀이 (Java)

import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.util.Scanner;  
import java.util.StringTokenizer;  
  
public class boj1991 {  
    public static class Tree {  
        Node root = new Node("A");  
  
        public void insertNode(Node root, String data, String leftData, String rightData) {  
            if (root == null) return;  
  
            if (root.data.equals(data)) {  
                if (!leftData.equals(".")) {  
                    root.left = new Node(leftData);  
                }  
                if (!rightData.equals(".")) {  
                    root.right = new Node(rightData);  
                }  
            } else {  
                insertNode(root.left, data, leftData, rightData);  
                insertNode(root.right, data, leftData, rightData);  
            }  
        }  
  
        public void preOrder(Node node) {  
            if (node == null) return;  
            System.out.print(node.data);  
            preOrder(node.left);  
            preOrder(node.right);  
        }  
  
        public void inOrder(Node node) {  
            if (node == null) return;  
            inOrder(node.left);  
            System.out.print(node.data);  
            inOrder(node.right);  
        }  
  
        public void postOrder(Node node) {  
            if (node == null) return;  
            postOrder(node.left);  
            postOrder(node.right);  
            System.out.print(node.data);  
        }  
    }  
  
    public static class Node {  
        public String data;  
        public Node left;  
        public Node right;  
  
        public Node(String data) {  
            this.data = data;  
        }  
  
        public Node(String data, Node left, Node right) {  
            this.data = data;  
            this.left = left;  
            this.right = right;  
        }  
    }  
  
    public static void main(String[] args) throws Exception {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
  
        int N = Integer.parseInt(br.readLine());  
        Tree tree = new Tree();  
  
        for (int i = 0; i < N; i++) {  
            StringTokenizer st = new StringTokenizer(br.readLine());  
            String data = st.nextToken();  
            String leftData = st.nextToken();  
            String rightData = st.nextToken();  
            tree.insertNode(tree.root, data, leftData, rightData);  
        }  
  
        tree.preOrder(tree.root);  
        System.out.println();  
        tree.inOrder(tree.root);  
        System.out.println();  
        tree.postOrder(tree.root);  
    }  
}

Leave a comment