문제 12 · 레드-블랙 트리 삭제의 교환법칙
문제 12 [4점]
레드-블랙 트리red-black tree에서 임의의 노드
풀이 및 해설
결론(2점). 일반적으로 성립하지 않습니다. 두 결과 트리는 남는 키의 집합은 같지만, 모양(구조)이나 색이 서로 다를 수 있습니다.
이유의 핵심은 두 가지입니다.
- 같은 키 집합에 대해 유효한 레드-블랙 트리는 여러 개 존재합니다(정규형이 아님).
- 삭제 시의 재균형(재색칠·회전)은 그 순간의 트리 색과 모양에 의존합니다. 따라서
를 먼저 지우면 그 근처의 색·구조가 바뀌어 이후 삭제의 처리 과정이 달라지고, 순서를 바꾸면 또 달라집니다.
반례(2점). 다음 레드-블랙 트리를 생각합니다(
20(B)
/ \
10(B) 30(B)
\
35(R)여기서
순서 1)
검은 잎
10을 삭제하면 이중 흑색 결손이 생깁니다. 형제30의 먼 자식35가 빨강이므로, **회전을 동반하는 처리(case 4)**가 적용됩니다.20에서 좌회전하여30이 위로 올라옵니다.30(B) / \ 20(B) 35(B)이어서
35(이제 검은 잎)를 삭제하면 형제20이 검고 그 자식이 모두 검으므로 재색칠 후 결손을 루트로 전파(case 2),20이 빨강이 됩니다.
순서 2)
빨간 잎
35는 그냥 제거됩니다(재균형 불필요).20(B) / \ 10(B) 30(B)이어서 검은 잎
10을 삭제하면, 이제 형제30의 자식이 **모두 검정(nil)**이라 회전 없이 **재색칠 후 전파(case 2)**만 일어나고,30이 빨강이 됩니다.
결과 1(루트 30, 왼쪽 자식 20)과 결과 2(루트 20, 오른쪽 자식 30)는 루트도 모양도 다른 서로 다른 트리입니다.
직관: 10을 먼저 지울 때는 35가 빨강으로 남아 있어 그 빨강을 이용한 회전으로 결손을 해소하지만, 35를 먼저 지워 버리면 그 빨강이 사라져 10 삭제 시 회전 없이 위로 전파만 가능해집니다. 이 차이가 최종 트리를 갈라놓습니다.