B-트리 삭제 시뮬레이터
차수 m인 B-트리에서 키를 하나씩 지우며, 형제에게서 빌리거나(rotate) 합치는(merge) 재균형 과정을 단계별로 보여 줍니다.
키 3개 · 자식 4개까지, 최소 키 1개
80개까지 · 쉼표나 공백으로 구분
만들어진 트리
트리에 없는 값은 건너뜁니다
재균형(빌리기·합치기) 횟수
0회
뿌리까지 이어진 적은 없습니다.
삭제 뒤 트리
삭제 단계
| 차례 | 지운 값 | 바꿔치기 | 재균형 | 뿌리 줄어듦 |
|---|---|---|---|---|
| 1 | 1 | — | — | — |
| 2 | 15 | — | — | — |
| 3 | 6 | 선행자 5 | — | — |
사용 방법
- 1차수 m과 넣을 키를 정해 B-트리를 만듭니다.
- 2지울 키를 순서대로 적습니다.
- 3삭제 단계마다 빌리기·합치기 중 무엇이 일어났는지, 선행자·후속자로 바꿔치기했는지 확인합니다.
자주 묻는 질문
삽입은 노드가 가득 차면 위로 갈라지지만(split), 삭제는 노드가 최소 키 개수(⌈m/2⌉−1개) 아래로 떨어지면 형제에게서 빌리거나(rotate) 형제와 합칩니다(merge). 합치기가 뿌리까지 이어지면 트리 높이가 한 층 줄어듭니다 — 삽입에서 뿌리가 갈라져 높이가 느는 것과 대칭입니다.
바로 지우지 않고, 왼쪽·오른쪽 자식 중 여유(키가 더 많은 쪽)가 있는 쪽에서 바꿔치기 키를 가져옵니다. 왼쪽에서 가져오면 그 자식의 가장 큰 키(선행자), 오른쪽에서 가져오면 가장 작은 키(후속자)입니다. 그 키를 이 자리에 놓고, 원래 있던 자식에서 다시 지웁니다.
형제 중 하나가 최소 개수보다 많이 갖고 있으면 빌립니다(부모의 갈림키를 내리고 형제의 끝 키를 부모로 올림). 양쪽 형제 모두 최소 개수뿐이면 부모의 갈림키를 끌어내려 형제와 하나로 합칩니다.
B-트리 삭제는 표준 절차라 정답 자체는 모든 교재가 같습니다. 다만 흔한 교재 설명(CLRS)은 내려가기 전에 미리 자식을 채워 두는 방식을 쓰는데, 이 사이트의 차수 규약(최대 m−1개, 최소 ⌈m/2⌉−1개)에서는 그 방식이 홀수 차수에서 노드를 최대치보다 하나 넘치게 만드는 것을 직접 재현해 확인했습니다. 그래서 실제로 최소 아래로 떨어진 뒤에만 재균형하는 방식(아래에서 위로)으로 고쳐 구현했고, 무작위 트리·무작위 삭제 순서 조합 수만 번으로 매 단계 B-트리 성질이 지켜지는지 대조했습니다.
알아두면 좋은 점
- 삭제 알고리즘 자체(빌리기·합치기)는 모든 교재가 동일하게 기술하는 표준 절차입니다(정확도 다툼 없음). 다만 "언제 재균형하는가"는 dev/btree-insert의 차수 규약(최소 ⌈m/2⌉−1개)에 맞춰 아래에서 위로(실제로 최소 아래로 떨어진 뒤에) 처리하도록 구현했습니다 — CLRS의 원 설명(내려가기 전에 미리 채움)을 그대로 옮기면 홀수 차수에서 노드가 최대치를 넘는 경우가 생김을 직접 확인했습니다.
- 모든 잎의 깊이가 같은가·모든 노드가 키 개수 규칙을 지키는가·중위 순회가 오름차순인가·남은 키 집합이 정확한가를 무작위 시나리오 다수(차수 3~8)로 대조했습니다.
- 한 번에 80개까지 넣습니다. 과정을 그림과 표로 보이는 것이 목적이라 그보다 많으면 읽히지 않습니다.
- 입력한 값은 서버로 전송되지 않고 브라우저 안에서만 계산됩니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.