입력: 키 (Key)
출력: 삭제한 경우 True / 해당 키의 노드가 없는 경우 False
class BinSearchTree:
def remove(self, key):
node, parent = self.lookup(key)
if node:
...
return True
else:
return False
이진 탐색 트리 구조의 유지
삭제되는 노드가
1. 말단 (leaf) 노드인 경우
class Node:
def countChildren(self):
count = 0
if self.left:
count += 1
if self.right:
count += 1
return count
밀단 (Leaf) 노드의 삭제
### 이진 탐색 트리가 별로 효율적이지 못한 경우
T = BinSearchTree()
T.insert(1, 'john')
T.insert(2, 'mary')
T.insert(3, 'anne')
T.insert(4, 'peter')
-> 높이의 균형을 맞추지 못하도 한쪽으로 치우친 이진 탐색 이 경우는 선형 탐색과 동등한 정도의 복잡도
T = BinSearchTree()
T.insert(4, 'john')
T.insert(3, 'mary')
T.insert(2, 'anne')
T.insert(1, 'peter')
-> 이경우도 마찬가지