Scroll indicator done
728x90

https://www.acmicpc.net/problem/1991

 

 

코드
package com.example.algorithm.study.review;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class RV_B1991_트리순회 {
    static int n;
    static Node root = new Node('A', null, null);
    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            String[] strArray = br.readLine().split(" ");
            char a = strArray[0].charAt(0);
            char b = strArray[1].charAt(0);
            char c = strArray[2].charAt(0);
            addNode(root, a, b, c);
        }

        preorder(root);
        sb.append("\n");
        inorder(root);
        sb.append("\n");
        postorder(root);
        System.out.println(sb);
    }

    static void preorder(Node node) {
        sb.append(node.num);
        if(node.left != null) preorder(node.left);
        if(node.right != null) preorder(node.right);
    }

    static void inorder(Node node) {
        if(node.left != null) inorder(node.left);
        sb.append(node.num);
        if(node.right != null) inorder(node.right);
    }

    static void postorder(Node node) {
        if(node.left != null) postorder(node.left);
        if(node.right != null) postorder(node.right);
        sb.append(node.num);
    }

    static void addNode(Node node, char num, char left, char right) {
        if (node.num == num) {
            node.left = left == '.' ? null : new Node(left, null, null);
            node.right = right == '.' ? null : new Node(right, null, null);
        } else {
            if(node.left != null) addNode(node.left, num, left, right);
            if(node.right != null) addNode(node.right, num, left, right);
        }
    }

    static class Node {
        char num;
        Node left, right;

        Node(char num, Node left, Node right) {
            this.num = num;
            this.left = left;
            this.right = right;
        }
    }
}

728x90

'BAEKJOON > Java' 카테고리의 다른 글

[B9934][완전 이진 트리][java]  (0) 2024.06.01
[B2225][합분해][java]  (0) 2024.06.01
[B20437][문자열 게임2][java]  (0) 2024.06.01
[B5710][전기 요금][java]  (0) 2024.06.01
[B1654][랜선 자르기][java]  (0) 2024.06.01