자료 구조와 알고리즘

빈 이진 탐색 트리에 1, 2, 3, …, 1000의 순서로 값을 삽입했다(균형을 잡는 조작은 하지 않는다). 이 트리에서 1000을 찾을 때, 루트부터 비교하기 시작하여 찾을 때까지 비교하는 노드의 수는?

  1. A10
  2. B500
  3. C1,000
정답과 해설 보기

정답: C. 1,000

오름차순으로 삽입하면 새 값은 매번 그때까지의 최댓값의 오른쪽 자식이 되므로, 트리는 오른쪽으로만 뻗은 한 줄(높이 999)이 됩니다. 1000은 맨 아래에 있으므로 1, 2, …, 1000의 1,000개 노드와 비교하게 되며, 연결 리스트를 앞에서부터 따라가는 것과 같은 O(n)입니다. 균형 잡힌 트리라면 단의 수는 약 log₂ 1000 ≈ 10이므로, AVL 트리나 레드-블랙 트리처럼 삽입이나 삭제 때마다 모양을 정돈하는 균형 이진 탐색 트리를 사용하면 최악에도 O(log n)을 유지할 수 있습니다.

이 분야 연습하기 분야로 돌아가기

자료 구조와 알고리즘의 다른 문제

  1. 데이터베이스나 파일 시스템의 인덱스에 이진 탐색 트리가 아니라 B 트리(B+ 트리 포함)가 자주 쓰이는 주된 이유는?
  2. 정점이 100만 개, 간선이 300만 개 정도인 도로망처럼 정점 수에 비해 간선이 적은(희소한) 그래프를 메모리에 저장하는 방법으로 적절한 것은?
  3. 간선에 가중치가 없는 그래프에서, 출발점에서 각 정점까지의 최소 간선 수를 구하고 싶다. 적합한 탐색 방법과 그때 사용하는 자료 구조의 조합은?
  4. 간선에 방향이 없는 그래프에서 각 정점의 이웃 정점이 다음과 같다. A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E. 정점 A부터 재귀적인 깊이 우선 탐색을 수행한다. 이웃 정점은 여기에 쓴 순서로 조사하고, 아직 방문하지 않은 정점이 발견되면 바로 그 정점으로 나아간다. 정점을 방문하는 순서는?
  5. 간선에 방향이 없는 그래프에서 간선의 가중치(거리)가 S−A: 4, S−B: 1, A−B: 2, A−C: 1, B−C: 5, C−T: 3, A−T: 6이다. 다익스트라 알고리즘으로 S에서 T까지의 최단 경로를 구했을 때, 그 경로와 길이는?