[자료구조/알고리즘] 균형 이진 탐색 트리(Balanced Binary Search Tree)

Vitabin·2025년 1월 20일
0

자료구조/알고리즘

목록 보기
8/11

균형 이진 탐색 트리(Balanced Binary Search Tree)

  • 정의
    - 노드의 삽입과 삭제가 일어날 때 균형을 유지하도록 하는 트리
  • 종류
    - AVL 트리
    - Red-Black 트리

이진 탐색 트리의 편향

  • 이진 탐색 트리의 경우 데이터 삽입 순서에 따라 편향이 발생할 수 있음

AVL 트리

  • 정의
    - 노드가 삽입, 삭제될 때 트리의 균형을 체그하고 유지하는 트리
  • 특징
    - 시간복잡도 O(logN)
    - 각 노드의 BF를 [-1,0, 1]만 가지게 하여 균형을 유지
    • BF(Balance Factor): 왼쪽 서브 트리의 높이 - 오른쪽 서브 트리의 높이

리벨런싱

  • 균형이 깨진 경우
    - BF가 양수이면 왼쪽 서브트리에 불균형이 발생
    - BF가 음수이면 오른쪽 서브트리에 불균형이 발생
  • 회전 연산을 통해 균형을 유지
    - 단순 회전: LL, RR
    - 이중 회전: LR, RL

LL

  • 1회 회전
  • 삽입, 삭제 노드의 BF가 양수이고 그 노드의 왼쪽 노드 BF가 양수일 때 연산

RR

  • 1회 회전
  • 삽입, 삭제 노드의 BF가 음수이고 그 노드의 왼쪽 노드 BF가 음수일 때 연산

LR

  • 2회 회전
  • 삽입, 삭제 노드의 BF가 양수이고 그 노드의 왼쪽 노드 BF가 음수일 때 연산

RL

  • 2회 회전
  • 삽입, 삭제 노드의 BF가 음수이고 그 노드의 왼쪽 노드 BF가 양수일 때 연산

Red-Black 트리

  • 조건
    - root노드와 leaf 노드의 색은 black
    - red 색 노드의 자식은 black(double red 불가)
    - 모든 leaf 노드에서 root 노드까지 가는 경로의 black 노드 수는 같음

Red-Black 트리 vs AVL 트리

  • Tree 체계가 잡힌 후 탐색이 많은 경우 AVL트리가 유리
  • 삽입, 삭제가 빈번한 경우 Red-Black 트리가 유리

구현(TODO)

0개의 댓글