더북(TheBook)

이제 그림 9-4의 왼쪽 회전 연산을 코드로 구현해 보겠습니다.

코드 9-3

    def __left_rotate(self, n):
        # n's right child
        r = n.right
        # r's left child
        l = r.left

        # l을 n의 오른쪽 자식으로
        l.parent = n
        n.right = l

        # n.parent를 r.parent로
        # n이 루트라면 트리의 루트도 업데이트
        if n == self.__root:
            self.__root = r
        elif n.parent.left == n:
            n.parent.left = r
        else:
            n.parent.right = r
        r.parent = n.parent

        # n을 r의 왼쪽 자식으로
        r.left = n
        n.parent = r
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.