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