왜 왜 균형 트리가 필요한가? 실무에서 이 개념 없이는 문제를 해결할 수 없습니다. 핵심 동기와 배경을 먼저 이해합시다.
이전 레슨에서 BST의 치명적 약점을 배웠습니다:
편향되면 O(n)이 됩니다.
문제 상황:
정렬된 데이터 [1,2,3,4,5,6,7]을 BST에 삽입하면:
1→2→3→4→5→6→7 (높이 6, 연결 리스트!)
우리가 원하는 것:
4
/ \
2 6 (높이 2, 균형!)
/ \ / \
1 3 5 7
자가 균형 트리(Self-Balancing Tree):
삽입/삭제 시
자동으로 균형을 유지하여 높이를 O(log n)으로 보장합니다.
주요 자가 균형 트리:
| 트리 | 균형 조건 | 사용처 |
|------|---------|-------|
|
AVL | 높이 차 ≤ 1 (엄격) | 읽기 많은 시스템 |
|
Red-Black | 색상 규칙 (느슨) | 범용 (Java, C++) |
|
B-Tree | 다분기 균형 | DB 인덱스, 파일시스템 |
|
B+Tree | B-Tree 변형 | DB (범위 쿼리) |
핵심: 모든 자가 균형 트리는
O(log n) 검색/삽입/삭제를 보장합니다.