포스트

AVL 트리

AVL 트리

AVL 트리란?

  • 이진 탐색 트리 (BST)의 한 종류
  • AVL 트리는 균형 이진 트리의 일종으로, 모든 노드의 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이가 1 이하인 트리를 말한다.

AVL 트리의 특징

  • 스스로 균형을 잡는 트리. 노드의 삽입과 삭제가 일어날 때마다 트리의 균형을 맞추는 작업을 수행한다.
  • balance factor를 통해 균형 유지
  • balance factor는 왼쪽 서브트리의 높이에서 오른쪽 서브트리의 높이를 뺀 값이다.
  • balance factor가 0, 1, -1인 경우에는 균형이 잡혀있다고 하며, 2 이상이거나 -2 이하인 경우에는 균형이 깨진 상태이다.
  • balance factor가 2 이상이거나 -2 이하인 경우에는 회전 연산을 통해 균형을 맞춘다.

AVL 트리의 회전 연산

  • AVL 트리는 회전 연산을 통해 균형을 맞춘다.
  • 회전 연산은 노드의 삽입과 삭제가 일어날 때마다 수행된다.
  • 왼쪽-왼쪽(LL), 오른쪽-오른쪽(RR), 왼쪽-오른쪽(LR), 오른쪽-왼쪽(RL)의 4가지 경우가 있다.
  • 회전 연산은 LL, RR, LR, RL의 4가지 경우에 따라 다르게 수행된다.

LL 회전

  • LL 회전은 노드의 왼쪽 서브트리의 왼쪽에 노드가 추가되는 경우이다.
  • LL 회전은 오른쪽으로 회전한다.
  • LL 회전은 노드의 오른쪽 자식을 노드의 부모로 만들고, 노드의 오른쪽 자식의 왼쪽 자식을 노드의 오른쪽 자식으로 만든다.

RR 회전

  • RR 회전은 노드의 오른쪽 서브트리의 오른쪽에 노드가 추가되는 경우이다.
  • RR 회전은 왼쪽으로 회전한다.
  • RR 회전은 노드의 왼쪽 자식을 노드의 부모로 만들고, 노드의 왼쪽 자식의 오른쪽 자식을 노드의 왼쪽 자식으로 만든다.

LR 회전

  • LR 회전은 노드의 왼쪽 서브트리의 오른쪽에 노드가 추가되는 경우이다.
  • LR 회전은 두 번의 회전으로 이루어진다.

RL 회전

  • RL 회전은 노드의 오른쪽 서브트리의 왼쪽에 노드가 추가되는 경우이다.
  • RL 회전은 두 번의 회전으로 이루어진다.

AVL 트리의 삽입 연산

  • AVL 트리의 삽입 연산은 BST의 삽입 연산과 동일하다.
  • 삽입 연산이 일어난 후, balance factor를 계산한다.
  • balance factor가 2 이상이거나 -2 이하인 경우에는 회전 연산을 통해 균형을 맞춘다.

AVL 트리의 삭제 연산

  • AVL 트리의 삭제 연산은 BST의 삭제 연산과 동일하다.
  • 삭제 연산이 일어난 후, balance factor를 계산한다.
  • balance factor가 2 이상이거나 -2 이하인 경우에는 회전 연산을 통해 균형을 맞춘다.

AVL 트리의 시간 복잡도

  • AVL 트리의 시간 복잡도는 O(logN)이다.
  • AVL 트리는 균형 이진 트리이므로, 높이가 logN이다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.