본문 바로가기
Develop/Coding Test | Algorithm

Tree 전위, 중위, 후위 순회

by 코젼 2024. 11. 7.
728x90
반응형

입력 값

1
2
3
4
5
6
7

 

소스코드

package algorithm.boj;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("/Users/kdelay/study/programmers/src/main/java/algorithm/boj/input.txt"));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //입력 값 받기
        List<Integer> nodes = new ArrayList<>();
        while (true) {
            String input = br.readLine();
            if (input == null) break;
            nodes.add(Integer.parseInt(input));
        }

        //결과 값 저장 변수
        String[] answer = new String[3];

        //전위 순회
        answer[0] = preOrder(nodes, 0).trim();

        //중위 순회
        answer[1] = inOrder(nodes, 0).trim();

        //후위 순회
        answer[2] = postOrder(nodes, 0).trim();

        System.out.println(Arrays.toString(answer));
    }

    private static String preOrder(List<Integer> nodes, int index) {
        //종료 조건
        if (index >= nodes.size()) return "";
        return nodes.get(index) + " " +
                preOrder(nodes, 2 * index + 1) + //왼쪽 자식 노드
                preOrder(nodes, 2 * index + 2); //오른쪽 자식 노드
    }

    private static String inOrder(List<Integer> nodes, int index) {
        //종료 조건
        if (index >= nodes.size()) return "";
        return inOrder(nodes, 2 * index + 1) +
                nodes.get(index) + " " +
                inOrder(nodes, 2 * index + 2);
    }

    private static String postOrder(List<Integer> nodes, int index) {
        //종료 조건
        if (index >= nodes.size()) return "";
        return postOrder(nodes, 2 * index + 1) +
                postOrder(nodes, 2 * index + 2) +
                nodes.get(index) + " ";
    }
}
728x90
반응형

'Develop > Coding Test | Algorithm' 카테고리의 다른 글

원형 큐  (0) 2025.02.14
알고리즘 정리 및 예제  (1) 2024.10.22
기본 자료구조 및 사용법 정리  (0) 2024.10.22
예상 알고리즘 문제  (0) 2024.10.22
[백준] JAVA 풀이 - 2805: 나무 자르기  (0) 2024.05.10

댓글