더북(TheBook)

그림 14-6은 데이터 5의 삽입이 끝난 이진 트리의 모습입니다.

301_2

그림 14-6 insert() 메서드 알고리즘 ④


지금까지 알아본 알고리즘을 코드로 작성해 보겠습니다.

코드 14-2 bst/BST.py ②(insert() 메서드)

    def insert(self, data):
        # 삽입할 노드 생성 및 데이터 설정
        new_node = TreeNode()
        new_node.data = data

        cur = self.root
        # 루트 노드가 없을 때
        if cur = = None:
            self.root = new_node
            return

        # 삽입할 노드의 위치를 찾아 삽입
        while True:
            #parent는 현재 순회 중인 노드의 부모 노드를 가리킴
            parent = cur
            # 삽입할 데이터가 현재 노드 데이터보다 작을 때
            if data < cur.data:
                cur = cur.left
                # 왼쪽 서브 트리가 None이면 새 노드를 위치시킨다
                if not cur:
                    parent.left = new_node
                    return
            # 삽입할 데이터가 현재 노드 데이터보다 클 때
            else:
                cur = cur.right
                # 오른쪽 서브 트리가 None이면 새 노드를 위치시킨다
                if not cur:
                    parent.right = new_node
                    return


알고리즘을 살펴보았으므로 코드에 대한 설명은 주석만으로 충분할 것입니다. 그림과 함께 비교해 보세요.

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