레드-블랙 트리 삽입 계산기
숫자를 차례로 넣으며 색이 언제 바뀌고 회전이 언제 일어나는지 단계별로 보여 줍니다. 매 단계 다섯 성질을 검사하고, 같은 수열을 AVL에 넣었을 때의 회전 수·높이와 나란히 견줍니다.
넣는 순서대로 적습니다. 순서가 바뀌면 나무 모양이 달라집니다
노드 7개 · 높이 3
회전 1회 · 색칠 3회
검정 높이 2 · 이론 상한 6
나무 모양
20검정├─ 10빨강│ ├─ 5검정│ │ └─ 1빨강│ └─ 15검정└─ 30검정└─ 25빨강
성질 검사
«모든 노드가 빨강 아니면 검정»과 «잎(NIL)은 검정»은 자료구조상 저절로 지켜져 따로 검사하지 않습니다.
삽입 단계
높이 0 · 검정 높이 1 · 다섯 성질 모두 만족
높이 1 · 검정 높이 1 · 다섯 성질 모두 만족
- · 20를 검정, 10를 빨강으로 칠하고 10를 왼쪽으로 돌립니다
높이 1 · 검정 높이 1 · 다섯 성질 모두 만족
- · 삼촌이 빨강이라 10와 30를 검정으로, 20를 빨강으로 칠하고 위로 올라갑니다
- · 뿌리는 언제나 검정이어야 하므로 20를 검정으로 칠합니다
높이 2 · 검정 높이 2 · 다섯 성질 모두 만족
높이 2 · 검정 높이 2 · 다섯 성질 모두 만족
높이 2 · 검정 높이 2 · 다섯 성질 모두 만족
- · 삼촌이 빨강이라 5와 15를 검정으로, 10를 빨강으로 칠하고 위로 올라갑니다
높이 3 · 검정 높이 2 · 다섯 성질 모두 만족
같은 수열을 AVL에 넣으면
AVL 쪽 LR·RL은 이름은 하나지만 실제로는 단일 회전을 두 번 하는 것이라 2로 세어 맞췄습니다. 그렇게 맞추지 않으면 레드-블랙이 억울하게 많아 보입니다.
사용 방법
- 1넣을 숫자를 넣는 순서대로 적습니다. 순서가 바뀌면 나무 모양이 달라집니다.
- 2삽입 단계에서 삼촌의 색에 따라 색칠로 끝나는지 회전이 필요한지 확인합니다.
- 3아래에서 같은 수열의 AVL 회전 수·높이와 견줘 봅니다.
자주 묻는 질문
① 모든 노드는 빨강 아니면 검정, ② 뿌리는 검정, ③ 모든 잎(NIL)은 검정, ④ 빨강 노드의 자식은 둘 다 검정, ⑤ 어느 노드에서 잎까지 내려가든 지나는 검정 노드 수가 같다입니다. ④와 ⑤가 함께 걸리면 가장 긴 경로가 가장 짧은 경로의 두 배를 넘지 못해 높이가 2·log₂(n+1) 이하로 묶입니다.
고치기 쉬운 성질만 깨지게 만들기 위해서입니다. 검정으로 넣으면 그 경로의 검정 노드 수만 하나 늘어 «모든 경로의 검정 수가 같다»가 곧바로 깨지는데, 이건 나무 전체에 걸린 성질이라 되돌리기 어렵습니다. 빨강으로 넣으면 깨질 수 있는 것은 «빨강이 잇달음» 하나뿐이고, 그 언저리에서 색을 바꾸거나 돌려 고칠 수 있습니다.
삼촌(부모의 형제)의 색이 갈림길입니다. 삼촌이 빨강이면 부모와 삼촌을 검정으로, 할아버지를 빨강으로 칠하고 할아버지에서 다시 보는 것으로 끝나 회전이 없습니다. 삼촌이 검정이면 회전이 필요하며, 새 노드가 안쪽 자식이면 먼저 부모를 돌려 바깥쪽으로 만든 뒤 할아버지를 돌립니다. 삽입 한 번에 회전은 많아야 두 번입니다.
한 줄로 정리하기 어렵습니다. 무작위 수열 2만 개로 재어 보면 단일 회전 기준으로 레드-블랙이 적은 경우가 77%지만 더 많은 경우도 8% 있고, 높이는 같은 경우가 97%로 대부분입니다. «AVL이 더 낮다»는 최악의 경우 한계(1.44·log₂n 대 2·log₂n) 이야기라 1부터 차례로 넣는 것처럼 치우친 입력에서 또렷하게 드러납니다.
AVL의 LR·RL 회전은 이름은 하나지만 실제로는 단일 회전을 두 번 하는 것입니다. 그대로 1로 세면 레드-블랙이 억울하게 많아 보이므로, 이 도구는 LR·RL을 2로 쳐서 맞춘 값으로 견줍니다. 맞추기 전에는 레드-블랙이 더 많아 보이는 경우가 85%로 나왔는데, 자료구조의 성질이 아니라 세는 방법의 문제였습니다.
전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.
알아두면 좋은 점
- 삽입만 다룹니다. 삭제는 형제의 색과 그 자식들까지 봐야 해 경우가 훨씬 많고, 흔히 말하는 레드-블랙의 회전 이점도 삭제에서 더 뚜렷합니다.
- 숫자는 40개까지 넣습니다. 이미 있는 키를 다시 넣으면 아무 일도 하지 않습니다.
- 검정 높이는 뿌리에서 잎까지 지나는 검정 노드 수이며 NIL은 세지 않습니다.
- 만드는 코드와 성질을 검사하는 코드를 따로 두고, 무작위 수열 500개의 매 삽입마다 다섯 성질이 지켜지는지 확인해 맞췄습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.