데브허브 | DEVHUB | 자료구조 - AVL 트리
- 이진 탐색 트리는 정렬된 순서로 값이 삽입될 경우 한쪽으로 치우쳐 검색 성능이 O(N)으로 저하될 수 있습니다. 📉
- AVL 트리는 이러한 이진 탐색 트리의 단점을 보완하기 위해 고안된 자가 균형 이진 탐색 트리입니다. ⚖️
- AVL 트리는 노드마다 '높이'와 '균형 인자'를 저장하며, 균형 인자가 -1, 0, 1 범위를 벗어나면 불균형으로 판단합니다. 📏
- 불균형이 발생하면 '회전' 작업을 통해 트리의 균형을 유지하며, 이는 삽입 및 삭제 시 노드의 배치를 조정하는 과정입니다. 🔄
- 회전에는 LL (오른쪽 회전), RR (왼쪽 회전), LR (왼쪽-오른쪽 회전), RL (오른쪽-왼쪽 회전)의 네 가지 유형이 있습니다. 🤸
- AVL 트리는 항상 엄격하게 균형을 유지하여 모든 탐색, 삽입, 삭제 연산이 O(log N)의 시간 복잡도를 보장합니다. ⚡
- 코드 구현 시, 노드 클래스에는
height 속성이 추가되며, AVL 클래스에는 높이 계산, 균형 인자 계산, 회전 메소드들이 포함됩니다. 💻
insert 및 delete 메소드는 이진 탐색 트리의 기본 로직에 더해, 작업 후 노드의 높이와 균형 인자를 갱신하고 필요시 회전을 수행합니다. ➕➖
- AVL 트리는 레드 블랙 트리보다 균형 유지에 더 엄격하여, 연산 비용이 더 들더라도 항상 빠른 검색 속도를 보장하는 데 중점을 둡니다. 🚀