도구스개발

레드-블랙 트리 삽입 계산기

숫자를 차례로 넣으며 색이 언제 바뀌고 회전이 언제 일어나는지 단계별로 보여 줍니다. 매 단계 다섯 성질을 검사하고, 같은 수열을 AVL에 넣었을 때의 회전 수·높이와 나란히 견줍니다.

넣는 순서대로 적습니다. 순서가 바뀌면 나무 모양이 달라집니다

노드 7개 · 높이 3

회전 1회 · 색칠 3회

검정 높이 2 · 이론 상한 6

나무 모양

20검정
├─ 10빨강
│ ├─ 5검정
│ │ └─ 1빨강
│ └─ 15검정
└─ 30검정
└─ 25빨강

성질 검사

뿌리가 검정만족
빨강이 잇달지 않음만족
모든 경로의 검정 수가 같음만족검정 높이 2
이진 탐색 트리만족

«모든 노드가 빨강 아니면 검정»과 «잎(NIL)은 검정»은 자료구조상 저절로 지켜져 따로 검사하지 않습니다.

삽입 단계

1. 10 넣기고칠 것 없음

높이 0 · 검정 높이 1 · 다섯 성질 모두 만족

2. 20 넣기고칠 것 없음

높이 1 · 검정 높이 1 · 다섯 성질 모두 만족

3. 30 넣기회전 1 · 색칠 0
  • · 20를 검정, 10를 빨강으로 칠하고 10를 왼쪽으로 돌립니다

높이 1 · 검정 높이 1 · 다섯 성질 모두 만족

4. 15 넣기회전 0 · 색칠 2
  • · 삼촌이 빨강이라 10와 30를 검정으로, 20를 빨강으로 칠하고 위로 올라갑니다
  • · 뿌리는 언제나 검정이어야 하므로 20를 검정으로 칠합니다

높이 2 · 검정 높이 2 · 다섯 성질 모두 만족

5. 25 넣기고칠 것 없음

높이 2 · 검정 높이 2 · 다섯 성질 모두 만족

6. 5 넣기고칠 것 없음

높이 2 · 검정 높이 2 · 다섯 성질 모두 만족

7. 1 넣기회전 0 · 색칠 1
  • · 삼촌이 빨강이라 5와 15를 검정으로, 10를 빨강으로 칠하고 위로 올라갑니다

높이 3 · 검정 높이 2 · 다섯 성질 모두 만족

같은 수열을 AVL에 넣으면

회전 (단일 회전으로 셈)레드-블랙 1 · AVL 1
높이레드-블랙 3 · AVL 3

AVL 쪽 LR·RL은 이름은 하나지만 실제로는 단일 회전을 두 번 하는 것이라 2로 세어 맞췄습니다. 그렇게 맞추지 않으면 레드-블랙이 억울하게 많아 보입니다.

새 노드를 빨강으로 넣는 이유는 «고치기 쉬운 성질만 깨지게» 만들기 위해서입니다. 검정으로 넣으면 그 경로의 검정 수만 하나 늘어 나무 전체에 걸린 성질이 곧바로 깨집니다. 빨강으로 넣으면 깨질 수 있는 것은 «빨강이 잇달음» 하나뿐이고, 이건 그 언저리에서 색을 바꾸거나 돌려서 고칠 수 있습니다.
AVL과의 차이를 «회전은 레드-블랙이 적고 높이는 AVL이 낮다»고 한 줄로 외우면 실제 숫자와 어긋납니다. 무작위 수열 2만 개로 재어 보면 회전은 레드-블랙이 적은 경우가 77%지만 더 많은 경우도 8% 있고, 높이는 같은 경우가 97%로 대부분입니다. «AVL이 낮다»는 최악의 경우 한계(1.44·log₂n 대 2·log₂n) 이야기라, 1부터 40까지 차례로 넣는 것처럼 치우친 입력에서 또렷하게 드러납니다.
삽입만 다룹니다. 삭제는 경우가 훨씬 많아(형제의 색과 그 자식들까지 봐야 합니다) 여기서 다루지 않습니다. 흔히 말하는 레드-블랙의 회전 이점도 삭제에서 더 뚜렷합니다.

사용 방법

  1. 1넣을 숫자를 넣는 순서대로 적습니다. 순서가 바뀌면 나무 모양이 달라집니다.
  2. 2삽입 단계에서 삼촌의 색에 따라 색칠로 끝나는지 회전이 필요한지 확인합니다.
  3. 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일 · 결과는 참고용 추정치입니다.