Skip to content

문제 12 · 레드-블랙 트리 삭제의 교환법칙

문제 12 [4점]

레드-블랙 트리red-black tree에서 임의의 노드 XY를 삭제할 예정이라고 생각하자. X를 삭제하고 Y를 삭제한 레드-블랙 트리와, 순서를 바꿔 Y를 먼저 삭제하고 X를 삭제하는 경우 각각의 결과 트리는 동일(즉, '교환법칙'이 성립)한지 서술(2점)하고, 성립한다면 그 이유를, 그렇지 않다면 반례를 제시(2점)하시오.

풀이 및 해설

결론(2점). 일반적으로 성립하지 않습니다. 두 결과 트리는 남는 키의 집합은 같지만, 모양(구조)이나 색이 서로 다를 수 있습니다.

이유의 핵심은 두 가지입니다.

  • 같은 키 집합에 대해 유효한 레드-블랙 트리는 여러 개 존재합니다(정규형이 아님).
  • 삭제 시의 재균형(재색칠·회전)은 그 순간의 트리 색과 모양에 의존합니다. 따라서 X를 먼저 지우면 그 근처의 색·구조가 바뀌어 이후 Y 삭제의 처리 과정이 달라지고, 순서를 바꾸면 또 달라집니다.

반례(2점). 다음 레드-블랙 트리를 생각합니다(B=검정, R=빨강).

        20(B)
       /    \
    10(B)   30(B)
                \
               35(R)

여기서 X=10, Y=35를 삭제합니다.

순서 1) X=10 먼저 → 그다음 Y=35

  • 검은 잎 10을 삭제하면 이중 흑색 결손이 생깁니다. 형제 30먼 자식 35가 빨강이므로, **회전을 동반하는 처리(case 4)**가 적용됩니다. 20에서 좌회전하여 30이 위로 올라옵니다.

          30(B)
         /    \
      20(B)   35(B)
  • 이어서 35(이제 검은 잎)를 삭제하면 형제 20이 검고 그 자식이 모두 검으므로 재색칠 후 결손을 루트로 전파(case 2), 20이 빨강이 됩니다.

    결과 1:30(B) 루트, 왼쪽 자식 20(R)

순서 2) Y=35 먼저 → 그다음 X=10

  • 빨간 잎 35는 그냥 제거됩니다(재균형 불필요).

          20(B)
         /    \
      10(B)   30(B)
  • 이어서 검은 잎 10을 삭제하면, 이제 형제 30의 자식이 **모두 검정(nil)**이라 회전 없이 **재색칠 후 전파(case 2)**만 일어나고, 30이 빨강이 됩니다.

    결과 2:20(B) 루트, 오른쪽 자식 30(R)

결과 1(루트 30, 왼쪽 자식 20)과 결과 2(루트 20, 오른쪽 자식 30)는 루트도 모양도 다른 서로 다른 트리입니다.

교환법칙 성립하지 않음 — 삭제 재균형이 그때그때의 색·구조에 의존하기 때문

직관: 10을 먼저 지울 때는 35가 빨강으로 남아 있어 그 빨강을 이용한 회전으로 결손을 해소하지만, 35를 먼저 지워 버리면 그 빨강이 사라져 10 삭제 시 회전 없이 위로 전파만 가능해집니다. 이 차이가 최종 트리를 갈라놓습니다.

PDF