코드 9-3을 보면 복잡해 보이지만 그림 9-4의 회전을 구현한 것뿐입니다. 오른쪽 회전도 코드로 확인해 볼까요?
코드 9-4
def __right_rotate(self, n):
# n's left child
l = n.left
# lc's right child
r = l.right
# r을 n의 왼쪽 자식으로
r.parent = n
n.left = r
# n.parent를 l.parent로
# n이 루트라면 트리의 루트도 업데이트
if n == self.__root:
self.__root = l
elif n.parent.left == n:
n.parent.left = l
else:
n.parent.right = l
l.parent = n.parent
# n을 lc의 오른쪽 자식으로
l.right = n
n.parent = l
코드 9-4는 그림 9-5를 구현한 것입니다.