AVL 트리 삭제 시뮬레이터
숫자를 넣어 AVL 트리를 만든 뒤 하나씩 지우며, 삭제마다 몇 번의 회전이 뿌리까지 이어지는지 단계별로 보여 줍니다.
공백이나 쉼표로 나눠 넣습니다. 40개까지 다룹니다.
만들어진 트리
50 (BF +1) ├─ 30 (BF 0) │ ├─ 20 (BF 0) │ │ ├─ 10 (BF 0) │ │ └─ 25 (BF 0) │ └─ 40 (BF 0) │ ├─ 35 (BF 0) │ └─ 45 (BF 0) └─ 70 (BF 0) ├─ 60 (BF 0) └─ 80 (BF 0)
공백이나 쉼표로 나눠 넣습니다. 트리에 없는 값은 건너뜁니다.
총 회전 횟수
0회
삭제 전부에서 균형이 한 번도 무너지지 않았습니다.
삭제 단계
| 차례 | 지운 값 | 후속자 사용 | 회전 | 높이 |
|---|---|---|---|---|
| 1 | 10 | — | — | 3 |
| 2 | 20 | — | — | 3 |
| 3 | 30 | 35 | — | 3 |
삭제 뒤 트리
10 삭제 — 잎이거나 자식이 하나라 바로 지웠습니다.
50 (BF +1) ├─ 30 (BF 0) │ ├─ 20 (BF -1) │ │ └─ 25 (BF 0) │ └─ 40 (BF 0) │ ├─ 35 (BF 0) │ └─ 45 (BF 0) └─ 70 (BF 0) ├─ 60 (BF 0) └─ 80 (BF 0)
20 삭제 — 잎이거나 자식이 하나라 바로 지웠습니다.
50 (BF +1) ├─ 30 (BF -1) │ ├─ 25 (BF 0) │ └─ 40 (BF 0) │ ├─ 35 (BF 0) │ └─ 45 (BF 0) └─ 70 (BF 0) ├─ 60 (BF 0) └─ 80 (BF 0)
30 삭제 — 자식이 둘이라 후속자 35를 그 자리에 올렸습니다.
50 (BF +1) ├─ 35 (BF -1) │ ├─ 25 (BF 0) │ └─ 40 (BF -1) │ └─ 45 (BF 0) └─ 70 (BF 0) ├─ 60 (BF 0) └─ 80 (BF 0)
사용 방법
- 1넣을 숫자를 순서대로 적어 AVL 트리를 만듭니다.
- 2지울 숫자를 순서대로 적습니다.
- 3삭제 단계마다 몇 번의 회전이 일어났는지, 후속자 키를 썼는지 확인합니다.
자주 묻는 질문
삽입은 넣은 자리에서 위로 올라가며 처음 만나는 무너진 조상 한 곳만 고치면 끝나지만, 삭제는 지운 자리의 부분나무 높이가 줄어들 수 있어 그 위 조상 전부를 다시 확인해야 합니다. 그래서 삭제 한 번에 회전이 여러 번(최악의 경우 경로 길이만큼) 일어날 수 있습니다.
그 노드의 오른쪽 부분나무에서 가장 작은 값(중위 후속자)을 찾아 그 값을 지울 자리에 복사하고, 후속자 자신을 오른쪽 부분나무에서 다시 지웁니다. 후속자는 왼쪽으로 끝까지 내려간 자리라 자식이 최대 하나뿐이라 재귀가 거기서 끝납니다.
네. 무너진 노드의 균형인수 부호와 무거운 쪽 자식의 균형인수 부호로 가르는 기준은 똑같습니다(dev/avl-rotation 참고). 다른 것은 이 판정을 경로 위 모든 조상에서 반복해야 한다는 점뿐입니다.
AVL 삭제는 표준 절차라 정답 자체는 모든 교재가 같습니다(외부 정답표가 필요 없는 자료구조 알고리즘). 대신 무작위로 만든 트리에 무작위 순서로 삭제를 반복하며 매 단계 「중위 순회가 오름차순인가」·「모든 노드의 균형인수가 ±1 이내인가」·「남은 키 집합이 정확히 일치하는가」 세 불변식이 항상 성립하는지 대조했습니다.
알아두면 좋은 점
- 삭제 알고리즘 자체는 CLRS 등 모든 교재가 동일하게 기술하는 표준 절차입니다(정확도 다툼 없음).
- 이진 탐색 트리 성질(중위 순회 오름차순)·AVL 균형 성질(|균형인수|≤1)·키 집합 일치를 무작위 시나리오 다수로 대조했습니다.
- 한 번에 40개까지 넣습니다. 과정을 그림과 표로 보이는 것이 목적이라 그보다 많으면 읽히지 않습니다.
- 입력한 값은 서버로 전송되지 않고 브라우저 안에서만 계산됩니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.