본문 바로가기

프로그래밍/알고리즘/C++

트리 최적 노드 삽입 순서

#include <stdio.h>

 

void swap(int *aint *b) {

   int temp = *a;

   *a = *b;

   *b = temp;

}

void bubble_sort(int *arrayint size) {

   for (int i = size - 1i >= 0i--)

       for (int j = 0j < ij++)

          if (array[j] > array[j + 1])

              swap(&array[j], &array[j + 1]);

}

void best_way(intarrayint fromint size) {

   if (from == size)

       return;

   int center=(from + size) / 2;

   printf("%d "array[center]);

   best_way(arrayfromcenter);

   best_way(arraycenter + 1size);

}

int main() {

   int sample[10] = { 2031564 };

   printf("정렬 되기 : ");

   for (int i = 0i < 7i++)

       printf("%d "sample[i]);

   printf("\n정렬 : ");

   bubble_sort(sample7);

   for (int i = 0i < 7i++)

       printf("%d "sample[i]);

   printf("\n트리 삽입 최적 순서: ");

   best_way(sample07);

}


먼저 오름차순 정렬을 수행 후

중간 번호를 재귀적으로 선택한다.

입력은 시작 인덱스와 사이즈(끝 인덱스+1)를 넣어준다.


표준출력:

정렬 되기 전: 2 0 3 1 5 6 4 

정렬 후: 0 1 2 3 4 5 6 

트리 삽입 최적 순서: 3 1 0 2 5 4 6