문제 2 · 배열을 BST로 만들 때의 시간복잡도
문제 2 [4점]
원소
풀이 및 해설
시간복잡도
배열의 원소를 하나씩 이진 탐색 트리(BST)에 삽입하여 트리를 만든다고 하자. 삽입 한 번의 비용은 그때의 트리 높이
이유
BST에 원소 하나를 삽입하는 비용은 루트에서 삽입 위치까지 내려가는 경로의 길이, 즉 트리의 높이
평균의 경우: 입력이 무작위 순서이면 트리가 대체로 균형을 이루어 높이가
를 유지한다. 삽입할 때마다 약 만큼 내려가므로 전체는최악의 경우: 입력 배열이 이미 정렬되어(오름차순 또는 내림차순) 있으면, 새 원소는 항상 한쪽 끝에만 붙는다. 그러면 트리가 한 방향으로만 자라 연결 리스트처럼 편향된(degenerate) 트리가 되고 높이는
이 된다. 번째 삽입 비용이 이므로
즉 시간복잡도는 입력 순서에 따라 결정되는 트리의 균형 정도에 좌우된다. 이 최악의 경우를 피하려면 AVL 트리·레드-블랙 트리 같은 균형 이진 탐색 트리를 써서 높이를 항상