Skip to content

Syslian#11

Open
syslians wants to merge 3 commits into
mainfrom
syslian
Open

Syslian#11
syslians wants to merge 3 commits into
mainfrom
syslian

Conversation

@syslians

Copy link
Copy Markdown
Owner

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

public class Main {
static int[] inorder;
static int[] postorder;
static int[] index; // 중위 순회에서 노드의 인덱스 저장
static StringBuilder sb = new StringBuilder();

// 전위 순회 재귀 함수 (미완성)
static void preorder(int inStart, int inEnd, int postStart, int postEnd) {
    // 종료 조건
    if (inStart > inEnd || postStart > postEnd) {
        return;
    }

    // 후위 순회의 마지막 노드가 루트
    int root = postorder[postEnd];
    sb.append(root).append(" "); // 루트 출력

    // 중위 순회에서 루트의 인덱스 찾기
    int rootIdx = index[root];
    // TODO: 왼쪽 서브트리와 오른쪽 서브트리 어떻게 나눌지 계산해야 함
    int leftSize = rootIdx - inStart; // 왼쪽 서브트리 크기?

    // TODO: 왼쪽 서브트리 재귀 호출 필요
    preorder(inStart, ?, postStart, ?);

    // TODO: 오른쪽 서브트리 재귀 호출도 필요
    preorder(?, ?, ?, ?);
}

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

    // 입력 배열 초기화
    inorder = new int[n];
    postorder = new int[n];
    index = new int[n + 1];

    // 중위 순회 입력
    StringTokenizer st = new StringTokenizer(br.readLine());
    for (int i = 0; i < n; i++) {
        inorder[i] = Integer.parseInt(st.nextToken());
        index[inorder[i]] = i; // 노드 번호 -> 인덱스 매핑
    }

    // 후위 순회 입력
    st = new StringTokenizer(br.readLine());
    for (int i = 0; i < n; i++) {
        postorder[i] = Integer.parseInt(st.nextToken());
    }

    // 전위 순회 시작
    preorder(0, n - 1, 0, n - 1);
    // TODO: 출력 확인 필요
    System.out.println(sb.toString());
    br.close();
}

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant