■ 리프 노드의 삭제
먼저 리프 노드를 삭제하는 코드입니다.
(중략)
#1. 리프 노드일 때
if not cur.left and not cur.right:
rem_node = cur
cur = None
(중략)
bst.remove(9)
bst.preorder_traverse(bst.get_root(), f)
(중략)
실행결과 TreeNode of 9 is deleted
6 3 2 4 5 8 10 11
rem_node가 cur을 참조하게 하고 cur에 None을 할당합니다. 그림을 통해 살펴보겠습니다.
그림 14-15 리프 노드 삭제
cur이 None이 되면 이 값을 반환받아 업데이트될 10의 왼쪽 자식 노드는 None이 될 것입니다.