더북(TheBook)

코드 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를 구현한 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.