더북(TheBook)


2.1이진 탐색 트리의 추상 자료형


먼저 이진 탐색 트리의 추상 자료형을 살펴보겠습니다.

1| BST.insert(data) -> None
이진 탐색 트리에 데이터를 삽입합니다.

2| BST.search(target) -> node
이진 탐색 트리에서 대상 데이터를 가진 노드를 반환합니다. 데이터가 없으면 None을 반환합니다.

3| BST.remove(target) -> node
이진 탐색 트리에 대상 데이터가 있다면 데이터를 가진 노드를 삭제하면서 반환합니다. 데이터가 없으면 None을 반환합니다.

4| BST.insert_node(node) -> None
데이터가 아니라 노드를 삽입합니다. remove에서 반환받은 노드의 데이터를 수정한 후 다시 삽입할 때 사용합니다.


BST에서 insert()search() 메서드는 구현하기가 어렵지 않지만, remove() 메서드는 구현하기가 매우 까다롭습니다. 그 이유는 삭제하려는 노드가 리프(leaf) 노드인지, 자식 노드가 하나인지 두 개인지에 따라 삭제하는 방법이 다르기 때문입니다.

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