자료 구조와 알고리즘

이진 탐색 트리를 중위 순회(왼쪽 서브트리, 그 노드, 오른쪽 서브트리 순으로 방문한다)로 따라갔을 때, 방문한 노드의 값은 어떻게 늘어서는가? 값은 모두 서로 다르다고 한다.

  1. A오름차순(작은 순서)으로 늘어선다
  2. B트리에 삽입한 순서로 늘어선다
  3. C루트에서 가까운 순서(얕은 순서)로 늘어선다
정답과 해설 보기

정답: A. 오름차순(작은 순서)으로 늘어선다

이진 탐색 트리에서는 어느 노드에 대해서든 왼쪽 서브트리의 값은 모두 그 노드보다 작고, 오른쪽 서브트리의 값은 모두 큽니다. 그래서 왼쪽 서브트리, 노드, 오른쪽 서브트리의 순서로 따라가면 작은 값부터 차례로 방문하게 되어 결과는 오름차순이 됩니다. 루트에서 가까운 순서로 늘어서는 것은 단마다 왼쪽부터 방문하는 너비 우선(레벨 순서) 순회입니다. 삽입한 순서는 트리의 모양에는 남지만, 순회 순서와는 일치하지 않습니다.

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

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

  1. 빈 이진 탐색 트리에 50, 30, 70, 20, 40, 60, 80의 순서로 값을 삽입했다. 이 트리를 후위 순회(왼쪽 서브트리, 오른쪽 서브트리, 그 노드 순으로 방문한다)로 따라갔을 때의 순서는?
  2. 빈 이진 탐색 트리에 1, 2, 3, …, 1000의 순서로 값을 삽입했다(균형을 잡는 조작은 하지 않는다). 이 트리에서 1000을 찾을 때, 루트부터 비교하기 시작하여 찾을 때까지 비교하는 노드의 수는?
  3. 데이터베이스나 파일 시스템의 인덱스에 이진 탐색 트리가 아니라 B 트리(B+ 트리 포함)가 자주 쓰이는 주된 이유는?
  4. 정점이 100만 개, 간선이 300만 개 정도인 도로망처럼 정점 수에 비해 간선이 적은(희소한) 그래프를 메모리에 저장하는 방법으로 적절한 것은?
  5. 간선에 가중치가 없는 그래프에서, 출발점에서 각 정점까지의 최소 간선 수를 구하고 싶다. 적합한 탐색 방법과 그때 사용하는 자료 구조의 조합은?