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() 메서드와 다른 부분은 주석을 넣어 두었습니다.

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