더북(TheBook)

insert_node() 메서드

이번에는 remove() 메서드에서 반환받은 삭제 노드를 수정한 다음 이진 탐색 트리에 다시 삽입하는 insert_node() 메서드를 만들겠습니다.

코드 14-7 bst/BST.py – 6(insert_node() 메서드)

    # 인자가 데이터가 아니라 노드다
    # insert( ) 메서드에서
    # 노드 생성 코드만 빼면
    # 코드 흐름은 완전히 같다
    def insert_node(self, node):
        # 노드 생성 코드 없음
        # 노드 생성에 따른 부담을 덜 수 있다

        cur = self.root

        # insert( ) 메서드와 다른 점
        # new_node -> node
        if cur = = None:
            self.root = node
            return
        while True:
            parent = cur
            # insert( ) 메서드와 다른 점
            # data -> node.data
            if node.data < cur.data:
                cur = cur.left

            if not cur:
                # insert( ) 메서드와 다른 점
                # new_node -> node
                parent.left = node
                return
        else:
            cur = cur.right
            if not cur:
                # insert( ) 메서드와 다른 점
                # new_node -> node
                parent.right = node
                return


insert_node() 메서드는 인자로 데이터 대신 노드를 받습니다. remove() 메서드에서 반환받은 노드를 수정한 다음 이를 다시 삽입하기 위한 메서드입니다. 이 메서드를 이용하면 객체 생성에 따른 부담을 줄일 수 있습니다. insert() 메서드와 다른 부분은 주석을 넣어 두었습니다.

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