AVL 트리 회전 계산기
숫자를 차례로 넣으며 균형이 무너지는 자리와 그때 하는 회전(LL·RR·LR·RL)을 단계별로 보여 줍니다. 각 노드의 균형인수와 회전 뒤 트리 모양, 회전을 안 했을 때의 높이까지 함께 냅니다.
공백이나 쉼표로 나눠 넣습니다. 40개까지 다룹니다.
회전 횟수
4회
LL 0 · RR 4 · LR 0 · RL 0회입니다.
완성된 트리
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 셋 중 하나여야 합니다.
삽입 단계
| 차례 | 넣은 값 | 회전 | 어디서 | 높이 |
|---|---|---|---|---|
| 1 | 1 | — | — | 0 |
| 2 | 2 | — | — | 1 |
| 3 | 3 | RR | 1 → 2가 그 자리로 | 1 |
| 4 | 4 | — | — | 2 |
| 5 | 5 | RR | 3 → 4가 그 자리로 | 2 |
| 6 | 6 | RR | 2 → 4가 그 자리로 | 2 |
| 7 | 7 | RR | 5 → 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 | +2 | 0 또는 +1 (왼쪽) | 오른쪽 회전 1회 |
| RR | −2 | 0 또는 −1 (오른쪽) | 왼쪽 회전 1회 |
| LR | +2 | −1 (오른쪽) | 왼자식을 왼쪽 회전한 뒤 오른쪽 회전 |
| RL | −2 | +1 (왼쪽) | 오른자식을 오른쪽 회전한 뒤 왼쪽 회전 |
이름의 두 글자는 «새 노드가 어느 쪽 손자 자리로 들어갔는가»를 읽은 것입니다. LR·RL이 회전 두 번인 것은 지그재그 모양이 한 번으로는 펴지지 않기 때문입니다. 고치는 자리는 언제나 «가장 아래에 있는, 균형이 무너진 조상»이며, 삽입에서는 거기서 한 번 고치면 부분나무의 높이가 넣기 전으로 돌아가 더 위로 번지지 않습니다.
사용 방법
- 1넣을 숫자를 넣는 순서대로 공백이나 쉼표로 나눠 적습니다.
- 2삽입 단계 표에서 어느 값을 넣었을 때 어떤 회전이 일어났고 어느 노드에서 고쳤는지 확인합니다.
- 3회전이 일어난 순간의 트리 그림에서 어떤 노드가 그 자리로 올라왔는지 봅니다.
- 4「회전을 안 했다면」 높이와 견주어 균형 맞추기가 무엇을 막아 주는지 확인합니다.
- 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일 · 결과는 참고용 추정치입니다.