더북(TheBook)

이제 키의 삽입 연산인 insert를 구현해 보겠습니다. 코드를 먼저 볼까요?

코드 9-5

    def insert(self, key):
        new_node = RBNode(key)
        new_node.left = self.__EXT
        new_node.right = self.__EXT

        cur = self.__root
        if not cur:
            self.__root = new_node
            # 루트 노드는 BLACK
            self.__root.color = "BLACK"
            return

        while True:
            parent = cur
            if key < cur.key:
                cur = cur.left
                if cur == self.__EXT:
                    parent.left = new_node
                    # 노드의 parent 설정
                    new_node.parent = parent
                    break
            else:
                cur = cur.right
                if cur == self.__EXT:
                    parent.right = new_node
                    # 노드의 parent 설정
                    new_node.parent = parent
                    break
        # 노드 삽입 후 처리
        self.__insert_fix(new_node)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.