[자료구조] 트리(Tree) 시리즈 4: AVL트리란?(AVL Tree)란?

2024. 8. 4. 20:52·자료구조

AVL 트리란?

AVL트리는 노드가 추가될 때, 삭제될 때 트리의 균형상태를 파악해서 스스로 그 구조를 변경하여 균형을 잡는 트리이다.

주요 특징:

  • 모든 노드에서 왼쪽과 오른쪽 서브트리의 높이 차이가 최대 1
  • 자동으로 균형을 유지하여 항상 O(log n) 시간 복잡도 보장

균형 인수 (Balance Factor)

AVL 트리의 핵심은 '균형 인수(밸런스 팩터)'다.

균형 인수 = 왼쪽 서브트리의 높이 - 오른쪽 서브트리의 높이

  • 이 값은 항상 -1, 0, 1 중 하나여야 한다.
  • 이 범위를 벗어나면 재조정(rebalancing)을 해야한다.

AVL 트리 연산

1. 검색 (Search)

일반 이진 탐색 트리와 동일한 방식으로 수행된다.

2. 삽입 (Insertion)

  1. 일반적인 BST 삽입 수행
  2. 삽입 경로를 따라 올라가며 균형 인수 업데이트
  3. 불균형 발생 시 회전으로 재조정

3. 삭제 (Deletion)

  1. 일반적인 BST 삭제 수행
  2. 삭제 경로를 따라 올라가며 균형 인수 업데이트
  3. 불균형 발생 시 회전으로 재조정

회전 연산

AVL 트리는 4가지 회전 연산을 사용한다

단일 왼쪽 회전 (LL rotation)

단일 오른쪽 회전 (RR rotation)

왼쪽-오른쪽 회전 (LR rotation)

오른쪽-왼쪽 회전 (RL rotation)


AVL 트리의 장단점

장점:

  • 모든 연산이 O(log n) 시간 복잡도 보장
  • 완벽한 균형으로 최악의 경우에도 효율적

단점:

  • 잦은 재조정으로 삽입/삭제 시 오버헤드 발생 가능
  • 추가 공간 필요 (높이 정보 저장)

실제 응용

AVL 트리는 다음과 같은 상황에서 유용하다:

  • 데이터베이스 인덱싱
  • 메모리 할당 시스템
  • 검색 빈도가 높은 파일 시스템

결론

AVL 트리는 균형 잡힌 트리 구조를 통해 효율적인 연산을 보장한다. 특히 검색 작업이 빈번한 경우에 유용하다.

'자료구조' 카테고리의 다른 글

[자료구조] Set과 Map 근데 이제 해시와 트리를 곁들인  (1) 2024.10.08
[자료구조] 트리(Tree) 시리즈 5: 레드-블랙 트리(RB-Tree)란?  (1) 2024.08.04
[자료구조] 트리(Tree) 시리즈 3: 이진 탐색 트리(Binary Search Tree)란?  (0) 2024.08.04
[자료구조] 트리(Tree) 시리즈 2: 이진 트리(Binary Tree)란?  (0) 2024.08.04
[자료구조] 트리(Tree) 시리즈 1: 트리(Tree)란?  (1) 2024.08.04
'자료구조' 카테고리의 다른 글
  • [자료구조] Set과 Map 근데 이제 해시와 트리를 곁들인
  • [자료구조] 트리(Tree) 시리즈 5: 레드-블랙 트리(RB-Tree)란?
  • [자료구조] 트리(Tree) 시리즈 3: 이진 탐색 트리(Binary Search Tree)란?
  • [자료구조] 트리(Tree) 시리즈 2: 이진 트리(Binary Tree)란?
bearn_soo
bearn_soo
추상적으로 받아들이되 구체적으로 이해하라
  • bearn_soo
    초밥구이
    bearn_soo
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • Javascript (16)
      • Node.js (18)
      • 알고리즘 (8)
      • 네트워크 (2)
      • 데이터베이스 (10)
      • 운영체제 (11)
      • 자료구조 (6)
      • 공부기록 (7)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
bearn_soo
[자료구조] 트리(Tree) 시리즈 4: AVL트리란?(AVL Tree)란?
상단으로

티스토리툴바