문제 2 · 모든 연산이 인 이진 탐색 트리
문제 2 [2점]
0부터 9까지의 int형 원소 10개를 포함하며, 탐색(contains), 최소값 찾기(findMin), 최대값 찾기(findMax), 삽입(insert), 제거(remove)의 연산에서 전부
풀이 및 해설
이진 탐색 트리의 각 연산은 트리의 높이
이런 트리는 이미 정렬된 순서(예: 0, 1, 2, …, 9)로 삽입하면 만들어집니다. 각 원소가 항상 직전 원소의 오른쪽 자식이 되어, 연결 리스트와 똑같은 모양의 오른쪽 편향 트리가 됩니다.
0
\
1
\
2
\
3
\
⋱
\
9이 트리에서
findMin은 루트(0)이니 처럼 보이지만,findMax는 맨 아래9까지 번 내려가야 하므로 ,contains(9),insert,remove(9)역시 잎까지 내려가므로 모두 입니다.
즉, 높이가 원소 개수와 같아지는 편향 트리가 정답입니다. (9, 8, …, 0 순으로 삽입하면 왼쪽 편향 트리가 되며 결과는 동일합니다.)