도구스개발

AVL 트리 회전 계산기

숫자를 차례로 넣으며 균형이 무너지는 자리와 그때 하는 회전(LL·RR·LR·RL)을 단계별로 보여 줍니다. 각 노드의 균형인수와 회전 뒤 트리 모양, 회전을 안 했을 때의 높이까지 함께 냅니다.

공백이나 쉼표로 나눠 넣습니다. 40개까지 다룹니다.

회전 횟수

4회

LL 0 · RR 4 · LR 0 · RL 0회입니다.

노드 수7개
AVL 트리 높이2 (간선 수 기준)
회전을 안 했다면6
이 개수로 가능한 AVL 최대 높이3
중위 순회 (오름차순이어야 한다)1 2 3 4 5 6 7
같은 자료를 회전 없이 넣었다면 높이가 6까지 늘어났을 것을 2로 눌렀습니다. 최악의 탐색 비교 횟수가 7번에서 3번으로 줄어든 셈입니다.

완성된 트리

4 (BF 0)
├─ 2 (BF 0)
│  ├─ 1 (BF 0)
│  └─ 3 (BF 0)
└─ 6 (BF 0)
   ├─ 5 (BF 0)
   └─ 7 (BF 0)

BF는 균형인수로 «왼쪽 높이 − 오른쪽 높이»입니다. 왼쪽이 무거우면 양수이며, 반대로 정의하는 교재도 있어 부호가 뒤집혀 보일 수 있습니다. AVL은 모든 노드에서 이 값이 −1·0·+1 셋 중 하나여야 합니다.

삽입 단계

차례넣은 값회전어디서높이
110
221
33RR1 → 2가 그 자리로1
442
55RR3 → 4가 그 자리로2
66RR2 → 4가 그 자리로2
77RR5 → 6가 그 자리로2

회전이 일어난 순간의 트리

3을 넣고 RR 오른자식이 오른쪽으로 기울어 왼쪽 회전 1회. 균형이 무너진 노드는 1이고 그 자리에 2이 올라왔습니다.

2 (BF 0)
├─ 1 (BF 0)
└─ 3 (BF 0)

5을 넣고 RR 오른자식이 오른쪽으로 기울어 왼쪽 회전 1회. 균형이 무너진 노드는 3이고 그 자리에 4이 올라왔습니다.

2 (BF -1)
├─ 1 (BF 0)
└─ 4 (BF 0)
   ├─ 3 (BF 0)
   └─ 5 (BF 0)

6을 넣고 RR 오른자식이 오른쪽으로 기울어 왼쪽 회전 1회. 균형이 무너진 노드는 2이고 그 자리에 4이 올라왔습니다.

4 (BF 0)
├─ 2 (BF 0)
│  ├─ 1 (BF 0)
│  └─ 3 (BF 0)
└─ 5 (BF -1)
   └─ 6 (BF 0)

7을 넣고 RR 오른자식이 오른쪽으로 기울어 왼쪽 회전 1회. 균형이 무너진 노드는 5이고 그 자리에 6이 올라왔습니다.

4 (BF 0)
├─ 2 (BF 0)
│  ├─ 1 (BF 0)
│  └─ 3 (BF 0)
└─ 6 (BF 0)
   ├─ 5 (BF 0)
   └─ 7 (BF 0)

회전 네 가지를 가르는 기준

이름무너진 노드의 BF그 자식의 BF고치는 법
LL+20 또는 +1 (왼쪽)오른쪽 회전 1회
RR−20 또는 −1 (오른쪽)왼쪽 회전 1회
LR+2−1 (오른쪽)왼자식을 왼쪽 회전한 뒤 오른쪽 회전
RL−2+1 (왼쪽)오른자식을 오른쪽 회전한 뒤 왼쪽 회전

이름의 두 글자는 «새 노드가 어느 쪽 손자 자리로 들어갔는가»를 읽은 것입니다. LR·RL이 회전 두 번인 것은 지그재그 모양이 한 번으로는 펴지지 않기 때문입니다. 고치는 자리는 언제나 «가장 아래에 있는, 균형이 무너진 조상»이며, 삽입에서는 거기서 한 번 고치면 부분나무의 높이가 넣기 전으로 돌아가 더 위로 번지지 않습니다.

사용 방법

  1. 1넣을 숫자를 넣는 순서대로 공백이나 쉼표로 나눠 적습니다.
  2. 2삽입 단계 표에서 어느 값을 넣었을 때 어떤 회전이 일어났고 어느 노드에서 고쳤는지 확인합니다.
  3. 3회전이 일어난 순간의 트리 그림에서 어떤 노드가 그 자리로 올라왔는지 봅니다.
  4. 4「회전을 안 했다면」 높이와 견주어 균형 맞추기가 무엇을 막아 주는지 확인합니다.
  5. 5같은 숫자들을 순서만 바꿔 넣어 보면 트리 모양이 달라지는 것을 볼 수 있습니다.

자주 묻는 질문

균형이 무너진 노드의 균형인수와 그 자식의 균형인수 부호로 가릅니다. 무너진 노드가 +2(왼쪽이 무거움)이고 왼자식도 왼쪽으로 기울었으면 LL이라 오른쪽 회전 한 번, 왼자식이 오른쪽으로 기울었으면 LR이라 왼쪽·오른쪽 두 번입니다. −2일 때는 대칭으로 RR과 RL이 됩니다. 이름의 두 글자는 새 노드가 어느 쪽 손자 자리로 들어갔는지를 읽은 것입니다.

넣은 자리에서 위로 올라가며 처음 만나는, 균형인수가 ±2가 된 노드에서 합니다. 가장 아래에 있는 무너진 조상이라고도 합니다. 그보다 위쪽은 아직 확인하지 않아도 되는데, 여기서 고치면 그 부분나무의 높이가 넣기 전과 같아져 위로 번지지 않기 때문입니다. 그래서 삽입 한 번에 회전은 많아야 한 번입니다.

한 번으로는 지그재그 모양이 펴지지 않기 때문입니다. LR은 왼쪽으로 갔다가 오른쪽으로 꺾인 모양이라, 먼저 왼자식을 왼쪽으로 돌려 LL 모양으로 바꾼 뒤 오른쪽 회전을 합니다. 결과적으로 가운데 있던 손자가 그 자리의 뿌리로 올라옵니다.

달라집니다. 1 2 3 4 5를 차례로 넣은 트리와 3 1 4 2 5를 넣은 트리는 담긴 값이 같아도 모양이 다릅니다. 다만 어느 순서로 넣든 균형 조건은 지켜지므로 높이는 언제나 1.44·log₂n 안쪽에 머뭅니다. 중위 순회는 어느 쪽이든 오름차순입니다.

정의가 두 가지라서 그렇습니다. 이 계산기는 「왼쪽 높이 − 오른쪽 높이」로 두어 왼쪽이 무거우면 양수입니다. 반대로 「오른쪽 − 왼쪽」으로 두는 자료도 흔하며, 그때는 부호가 뒤집힐 뿐 어느 쪽이 무거운지는 같습니다. 높이는 간선 수로 세어 잎이 0, 빈 나무가 −1입니다.

아닙니다. 삭제는 회전이 뿌리까지 이어질 수 있습니다. 지운 자리의 부분나무 높이가 줄어들면 그 위 조상도 무너질 수 있어, 올라가며 여러 번 고쳐야 합니다. 이 계산기는 삽입만 다룹니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 검증은 1부터 7까지 차례로 넣으면 뿌리가 4인 완전 균형 트리(높이 2)가 되고 RR 회전이 네 번 일어난다는 것, 3-2-1(LL)·1-2-3(RR)·3-1-2(LR)·1-3-2(RL) 네 최소 예제가 모두 뿌리 2인 같은 모양으로 끝난다는 것으로 했습니다.
  • 무작위 자료 500벌에서 모든 노드의 균형 조건이 지켜지는지, 중위 순회가 언제나 오름차순인지, 높이가 그 노드 수의 이론 최대(피보나치 트리로 정해집니다)를 넘지 않는지도 대조했습니다.
  • 같은 값을 다시 넣으면 무시하고 표시만 합니다. 이진 탐색 트리에서 중복 키를 어떻게 다룰지는 정해진 답이 없어, 한쪽으로 보내거나 노드에 개수를 세는 칸을 두는 방식을 쓰기도 합니다.
  • 삭제는 다루지 않습니다. 삭제는 회전이 뿌리까지 연쇄될 수 있어 삽입과 성격이 다르고, 과정을 보이려면 화면이 훨씬 복잡해집니다.
  • 한 번에 40개까지 넣습니다. 과정을 그림과 표로 보이는 것이 목적이라 그보다 많으면 읽히지 않습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.