어떤 키 X를 찾는다고 할 때,
1. 현재노드를 루트로 설정한다.
2. X보다 현재노드가 작으면 왼쪽노드로 이동한다. 아니라면 오른쪽 노드로 이동한다.
3. 현재노드를 업데이트 한다.
4. 현재 노드의 키가 X이거나, 현재 노드가 null이면 종료한다.
탐색과 같이 반복문을 돌린다. 현재 노드를 키가 X인 노드로 업데이트한다.(현재 노드는 null이다.)
- 삭제하려는 노드가 리프노드: 해당 노드를 삭제한다.
- 삭제하려는 노드의 자식이 1개: 해당 노드를 삭제하고 그 위치에 자식노드를 놓는다.
- 삭제하려는 노드의 자식이 2개: 해당 노드의 왼쪽서브트리에서 가장 큰 노드 혹은 오른쪽서브트리에서 가장 작은 노드를 해당 노드의 자리에 놓고 해당 노드를 삭제한다.
BST에서의 모든 연산은 O(h)의 시간복잡도를 가진다.(h = 트리의 높이)
트리의 높이는
이진 탐색 트리에 대해 중점을 간략하게 잘 설명해주셔서 좋았습니다