balanced-treeavl-treered-black-tree

AVL Tree와 Red-Black Tree를 설명해 주세요

면접 출제
예상 시간
7
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

AVL Tree의 balance factor는 무엇인가요?

부가 설명

BST의 장점은 현재 노드와 비교해서 왼쪽 또는 오른쪽 중 한 방향만 보면 된다는 점입니다. 하지만 이 장점은 트리 높이가 낮을 때만 유지됩니다.

1
 \
  2
   \
    3
     \
      4

이렇게 한쪽으로 기울면 높이가 n에 가까워지고, 탐색도 결국 하나씩 따라가는 형태가 됩니다. AVL과 Red-Black Tree는 삽입·삭제 후 균형이 깨지면 rotation을 통해 BST의 정렬 규칙은 유지하면서 모양을 바꿉니다.

AVL은 balance factor를 봅니다.

balance factor = left subtree height - right subtree height
허용 값: -1, 0, +1

이 범위를 벗어나면 LL, RR, LR, RL 같은 케이스에 따라 회전합니다. 조건이 엄격한 만큼 트리가 더 낮게 유지되는 편입니다.

Red-Black Tree는 색깔 규칙을 봅니다.

1. 모든 노드는 red 또는 black
2. root는 black
3. red 노드의 자식은 black
4. 모든 NIL leaf는 black
5. 어떤 노드에서 leaf까지 가는 모든 경로의 black 노드 수는 동일

이 규칙 때문에 red가 무한히 연속될 수 없고, 한쪽 경로만 과하게 길어지는 것도 제한됩니다. 균형은 AVL보다 느슨하지만 삽입·삭제 때 필요한 조정이 상대적으로 적은 편입니다.

한 줄 정리

AVL은 높이 차이를 엄격히 관리하는 균형 BST이고, Red-Black Tree는 색깔 규칙으로 O(log n) 높이를 유지하는 조금 더 느슨한 균형 BST입니다.