Topic

AVL 트리(AVL Tree)

JackerLab 2025. 4. 21. 00:37
728x90
반응형

개요

AVL 트리는 데이터 구조 중 하나로, 모든 노드가 스스로 균형을 유지하도록 설계된 자가 균형 이진 탐색 트리(Self-Balancing Binary Search Tree)입니다. 삽입, 삭제 시 트리의 높이 균형을 유지함으로써 탐색, 삽입, 삭제 연산에서 최악의 성능을 보장하며, 데이터베이스 인덱스, 캐시, 메모리 기반 검색 등 다양한 분야에서 활용됩니다. 본 포스트에서는 AVL 트리의 개념, 원리, 구현 방식 및 다른 트리와의 비교를 다룹니다.


1. 개념 및 정의

항목 설명
정의 각 노드의 왼쪽과 오른쪽 서브트리 높이 차이가 1 이하인 이진 탐색 트리
명칭 유래 1962년 G.M. Adelson-Velsky와 E.M. Landis가 제안한 이름의 약자
핵심 특성 트리의 균형 인수(Balance Factor)를 통해 자동 균형 조정 수행

AVL 트리는 각 노드의 Balance Factor(왼쪽 서브트리 높이 - 오른쪽 서브트리 높이)가 -1, 0, 1만 허용됩니다.


2. 동작 원리

연산 설명 시간 복잡도
탐색 이진 탐색 규칙과 동일 O(log n)
삽입 균형인수 체크 → 불균형 시 회전 수행 O(log n)
삭제 삭제 후 균형 상태 재점검 및 회전 O(log n)

AVL 트리는 삽입/삭제 시 자동 회전(Rotation)을 통해 트리 균형을 유지합니다.


3. 회전(Rotation) 종류

회전 방식 발생 조건 설명
LL 회전 왼쪽 자식의 왼쪽에 삽입 우회전 수행 (Right Rotation)
RR 회전 오른쪽 자식의 오른쪽에 삽입 좌회전 수행 (Left Rotation)
LR 회전 왼쪽 자식의 오른쪽에 삽입 좌회전 후 우회전 수행
RL 회전 오른쪽 자식의 왼쪽에 삽입 우회전 후 좌회전 수행

이 회전 기법을 통해 삽입 및 삭제 후에도 트리의 균형을 유지할 수 있습니다.


4. AVL 트리 vs BST/Red-Black Tree

비교 항목 AVL Tree 일반 BST Red-Black Tree
균형 보장 엄격한 균형 유지 없음 느슨한 균형 유지 (균형은 대체로 좋음)
연산 속도 빠름 (탐색 최적) 불균형 시 성능 저하 삽입/삭제에 유리
회전 빈도 많음 (자주 회전 발생) 없음 회전 횟수 적음
적용 환경 읽기 중심, 검색 빈도 높은 시스템 단순 구조 쓰기 중심 시스템

AVL 트리는 검색 성능이 중요한 시스템에 적합하며, Red-Black Tree는 삽입/삭제 성능이 중요할 때 선호됩니다.


5. 실무 활용 사례

분야 적용 예시 효과
메모리 기반 DB 인메모리 테이블 인덱스 관리 탐색 속도 안정성 확보
운영체제 커널 내부 프로세스 관리 자료 구조 균형 유지로 응답 지연 최소화
컴파일러 심볼 테이블(symbol table) 구조화 빠른 변수 탐색 가능
게임 엔진 객체 충돌 체크 시 거리 탐색 O(log n) 성능 유지로 부하 최소화

AVL 트리는 삽입이 잦은 환경보다는 검색 중심의 환경에서 더 뛰어난 효과를 발휘합니다.


6. 결론

AVL 트리는 엄격한 균형 유지 기법을 통해 이진 탐색 트리의 최악 성능을 보완하는 고성능 구조입니다. 특히 검색 성능이 중요한 시스템에서는 안정적인 탐색 속도를 제공하며, 삽입·삭제 시 성능 저하 없이 균형을 자동으로 유지합니다. 다양한 회전 기법을 이해하고 활용함으로써 복잡한 자료 구조에서도 성능을 극대화할 수 있습니다.

728x90
반응형