이미 알고 있는 앞 순서 (앞 순서) 와 중간 순서 출력 뒷 순서

945 단어 PAT
이미 알고 있는 전순(선순)과 중순 출력 후순: 전순: 1, 2, 3, 4, 5, 6(뿌리 좌우) 중순: 3, 2, 4, 1, 6, 5(왼쪽 뿌리 오른쪽) 분석: 전순(뿌리 좌우)에 가장 먼저 나타나는 것은 항상 뿌리 결점이기 때문에 루트를 전순의 현재 뿌리 결점으로 표시하고 한 그루의 나무를 왼쪽 나무와 오른쪽 나무로 나눈다.start는 현재 인쇄해야 하는 하위 트리의 왼쪽 아래에 표시하고, end는 현재 인쇄해야 하는 하위 트리의 오른쪽 아래에 표시합니다.이 나무의 뒷순서를 차례로 인쇄하고, 차례로 출구는 start > end입니다.i는 루트가 표시하는 값이 중간 순서의 아래 표시이기 때문에 i는 중간 순서에서 루트 결점에 대응하는 왼쪽 트리와 오른쪽 트리를 구분하는 아래 표시입니다.왼쪽 트리를 인쇄한 다음 오른쪽 트리를 인쇄하고 현재 루트 결점pre[root]의 값을 출력합니다.출력의 뒷순서는: 3, 4, 2, 6, 5, 1 (왼쪽 오른쪽 루트)
#include 
using namespace std;
int pre[] = {1, 2, 3, 4, 5, 6};
int in[] = {3, 2, 4, 1, 6, 5};
void post(int root, int start, int end) {
    if(start > end) 
        return ;
    int i = start;
    while(i < end && in[i] != pre[root]) i++;
    post(root + 1, start, i - 1);
    post(root + 1 + i - start, i + 1, end);
    printf("%d ", pre[root]);
}

int main() {
    post(0, 0, 5);
    return 0;
}

좋은 웹페이지 즐겨찾기