Skip to content
난이도 출제 빈출문제은행 5

트리와 순회·수식 표기법 ​

트리(tree)는 뿌리 하나에서 가지가 갈라져 내려가는 계층 구조다. 실기 시험은 그림으로 트리를 주고 **차수(degree)·단말 노드(terminal node)·깊이(depth)**를 묻거나, 전위 순회(preorder)·중위 순회(inorder)·후위 순회(postorder)의 방문 순서를 쓰게 한다. 순회와 같은 원리로 수식을 적는 표기법과 후위 표기식 계산은 다음 문서에서 다룬다.

트리 용어 ​

아래 이진 트리(binary tree)를 예로 쓴다. 트리의 한 칸을 노드(node)라 하고, K가 맨 위의 근 노드(root node)다.

다이어그램 로딩…

B의 자식은 왼쪽 A 하나, F의 자식은 오른쪽 G 하나다.

용어뜻예제 트리
노드의 차수한 노드의 자식 수K 2, B 1, A 0
트리의 차수노드 차수 중 가장 큰 값2
단말 노드자식이 없는 노드A, G, P, T
레벨근 노드를 1로 센 층 번호A·G는 4
깊이가장 큰 레벨4

차수가 0인 노드를 단말 노드 또는 잎 노드(leaf node)라 한다. 레벨(level)과 깊이는 시험에서 근 노드를 1로 센다.1 여러 트리를 모아 놓은 것은 숲(forest)이라 한다. 예제에서 근 노드 K를 지우면 D와 R을 근으로 하는 트리 두 개로 이루어진 숲이 남는다.

이진 트리는 모든 노드의 차수가 2 이하인 트리다. 깊이가 k이면 노드는 최대 2ᵏ − 1개이고, 레벨 i에는 최대 2ⁱ⁻¹개가 있다. 깊이 4면 최대 15개다. 모든 레벨이 꽉 찬 트리를 포화 이진 트리(perfect binary tree), 마지막 레벨만 왼쪽부터 채워진 트리를 완전 이진 트리(complete binary tree)라 한다.

세 가지 순회 ​

순회(traversal)는 모든 노드를 한 번씩 방문하는 순서다. 이름은 근 노드를 언제 방문하느냐로 정한다. 왼쪽 서브트리(subtree, 어떤 노드 아래 딸린 작은 트리)는 항상 오른쪽보다 먼저다.

순회순서예제 결과
전위 순회근 → 왼쪽 → 오른쪽K D B A F G R P T
중위 순회왼쪽 → 근 → 오른쪽A B D F G K P R T
후위 순회왼쪽 → 오른쪽 → 근A B G F D P T R K

손으로 풀 때는 서브트리를 한 덩어리로 보고 규칙을 되풀이해 적용한다. 전위 순회라면 K를 먼저 쓰고, 왼쪽 덩어리 D를 다시 전위로 풀고, 그다음 오른쪽 덩어리 R을 푼다. 후위 순회에서는 근 노드 K가 항상 맨 끝에 오고, 전위 순회에서는 항상 맨 앞에 온다. 이것으로 답을 빠르게 검산할 수 있다. 중위 순회는 가운데 방문이다.

시험 포인트 ​

  • 근 노드 먼저 전위, 가운데 중위, 마지막 후위. 왼쪽은 항상 오른쪽보다 먼저.
  • 차수 0 → 단말 노드. 트리의 차수 = 노드 차수의 최댓값. 트리 여러 개의 모임 → 숲.
  • 깊이 k 이진 트리 최대 노드 2ᵏ − 1(근 레벨 1 기준).

참고

  1. 영어권 자료는 근 노드의 깊이를 0으로 세는 경우가 많다. 그 기준이면 예제 트리의 높이는 3이다. 시험 답안은 근 노드를 레벨 1로 세는 방식을 따른다. ↩︎

관련 문서