Competition/Baekjoon

[백준] 1991번 트리순회

bisi 2020. 3. 20. 13:04
문제 출처 

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

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 대문자로 매겨지며, 항상 A가 루트 노드가 된다. 자식 노드가 없는 경우에는 .으로 표현된다.

www.acmicpc.net

 

 

 

접근 방식 및 풀이

- 참고 사이트  : https://geehye.github.io/baekjoon-1991/#  

 

혼자는 해결을 못할 것 같아서 위의 사이트에 구현해놓은 코드를 참고했다.

한참을 봐도 이해가 안되서 직접 손으로 그려가며 이해했다.ㅠ

 

소스 코드 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {

    static Map<String, List<String>> map = new HashMap<>();
    private static int k;

    private static void preorder(String v){
        if(v.equals(".")) return;

        System.out.print(v);
        preorder(map.get(v).get(0));
        preorder(map.get(v).get(1));
        k++;
    }

    private static void inorder(String v) {
        if(v.equals(".")) return;

        inorder(map.get(v).get(0));
        System.out.print(v);
        inorder(map.get(v).get(1));
    }

    private static void postorder(String v) {
        if(v.equals(".")) return;

        postorder(map.get(v).get(0));
        postorder(map.get(v).get(1));
        System.out.print(v);
    }


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        for (int i = 0; i < n ; i++) {
            String[] tmp = br.readLine().split("\\s");
            List<String> list = new ArrayList<>();

            list.add(tmp[1]); list.add(tmp[2]);
            map.put(tmp[0], list);
        }

        preorder("A");
        System.out.println();
        inorder("A");
        System.out.println();
        postorder("A");
    }

}

 

 

 

 

결과 

 

'Competition > Baekjoon' 카테고리의 다른 글

[백준] 11655번 ROT13  (0) 2020.03.21
[백준] 11652번 카드 갯수 세기  (0) 2020.03.20
[백준] 11656번 접미사배열  (0) 2020.03.19