더북(TheBook)


2.5remove( ) 메서드


구현하기 가장 까다로운 remove() 메서드의 알고리즘과 코드를 구현해 보겠습니다. remove() 메서드는 재귀 함수를 사용해 구현하려 합니다.

먼저 지우려는 대상 데이터를 찾습니다. 다음으로 삭제 노드의 상태에 따라 세 가지 경우로 나누어 지웁니다.

1| 삭제 노드가 리프 노드일 때

2| 삭제 노드의 자식 노드가 하나일 때

3| 삭제 노드의 자식 노드가 두 개일 때


우선 유저 프로그래머가 사용할 remove() 메서드의 코드를 볼까요?

코드 14-4 bst/BST.py ④(remove() 메서드)

    def remove(self, target):
        # 루트 노드의 변경 가능성이 있으므로
        # 루트를 업데이트해야 한다
        self.root, removed_node = self.__remove_recursion(self.root, target)
        # 삭제된 노드의 자식 노드를 None으로 만든다
        removed_node.left = removed_node.right = None

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