더북(TheBook)

그림 9-11을 보면 모든 외부 노드를 하나의 객체로 표현했습니다. 이제 실제 코드로 구현합시다.

코드 9-2

class RedBlackTree:
    def __init__(self):
        self.__root = None
        # 모든 외부 노드를 하나의 객체로 표현
        self.__EXT = RBNode(None)
        # 외부 노드의 컬러는 블랙
        self.__EXT.color = "BLACK"

    def get_root(self):
        return self.__root

    def preorder_traverse(self, cur, func, *args, **kwargs):
        if cur == self.__EXT:
            return

        func(cur, *args, **kwargs)
        self.preorder_traverse(cur.left, func, *args, **kwargs)
        self.preorder_traverse(cur.right, func, *args, **kwargs)

코드 9-2에서 생성자를 보면 __EXT라는 멤버를 두어 RBNode 인스턴스 하나를 참조하도록 했습니다. 이 멤버가 모든 외부 노드를 표현합니다. 외부 노드의 컬러는 BLACK이므로 컬러를 바꾸어 줍니다.

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