Skip to content

문제 11 · 배열을 이진 탐색 트리로

문제 11 [4점]

원소 N개를 가지는 임의의 입력 배열을 이진 탐색 트리binary search tree 자료구조로 바꿀 때의 시간복잡도를 서술(1점)하고, 그 이유에 대해 설명(3점)하시오.

풀이 및 해설

시간복잡도(1점). 원소를 하나씩 insert로 넣어 트리를 만드는데, 결과는 입력 순서에 따라 달라집니다.

평균 O(NlogN),최악 O(N2)

이유(3점). BST에 한 원소를 삽입하는 비용은 삽입 시점의 트리 높이 h에 비례합니다. 따라서 N개를 넣는 총비용은 매 삽입 시의 높이들을 더한 값입니다.

평균(무작위 입력)의 경우. 원소들이 무작위 순서로 들어오면 트리가 대체로 균형 잡혀 높이가 O(logN) 수준을 유지합니다. 삽입 N번 각각이 평균 O(logN)이므로

k=1NO(logk)=O(NlogN).

(무작위 BST의 평균 깊이가 Θ(logN)이라는 알려진 결과와 부합합니다.)

최악(정렬된 입력)의 경우. 입력이 **이미 오름차순(또는 내림차순)**이면, 매 원소가 직전 원소의 한쪽 자식이 되어 **편향 트리(사향 트리)**가 만들어집니다. k번째 삽입 시 높이가 k1이므로 비용은

k=1N(k1)=N(N1)2=O(N2).정렬 입력연결 리스트 모양의 트리O(N2)

정리. BST 변환 비용은 트리가 얼마나 균형 잡히느냐에 좌우됩니다. 무작위·균형 상황에서는 O(NlogN), 정렬된 입력처럼 편향이 극대화되면 O(N2)입니다.

비교: (문제 11, 3분반의) 힙 만들기 buildHeap은 입력 순서와 무관하게 항상 O(N)인 것과 대조적입니다. 균형을 보장하려면 AVL·레드-블랙 트리를 쓰면 최악에도 O(NlogN)이 됩니다.

PDF