학습
시험

[대표 유형] 트리 중위 순회

난이도
INTERMEDIATE

문제 설명

1번 노드를 루트 노드로 하는 이진 트리(Binary Tree) 정보인 childNodes가 매개변수로 주어집니다. 해당 이진 트리에 대해 중위(Inorder) 순회하고, 방문한 순서대로 노드 번호를 반환하는 solution 함수를 작성하시오.


개념 설명

트리 순회(Tree Traversal)는 이진 트리(Binary Tree)에서 정의되는 그래프 순회 방법입니다.
먼저 이진 트리는 모든 내부 노드 들이 둘 이하의 자식 노드를 갖는 트리를 말합니다. 이진 트리의 경우 왼쪽 자식 노드와 오른쪽 자식 노드를 구분하기도 합니다.

트리 순회 중 중위 순회(Inorder Traverse)는 다음과 같은 순서로 트리 순회를 진행합니다.

  1. 왼쪽 자식 부분 트리를 재귀적으로 중위 순회합니다.
  2. 루트 노드를 탐색합니다.
  3. 오른쪽 자식 부분 트리를 재귀적으로 중위 순회합니다.

아래와 같은 이진 트리가 있다고 가정합니다.

먼저 루트 노드인 1번 노드에서 시작합니다. 중위 순회는 자기 자신의 노드를 탐색하기 이전에 왼쪽 자식 부분 트리를 먼저 순회하기 때문에 2번 노드의 부분트리를 순회합니다.

2번 노드 또한 왼쪽 자식이 5번 노드로 존재하기 때문에 5번 노드의 부분 트리를 순회합니다.

5번 노드는 자식 노드가 존재하지 않기 때문에 왼쪽 자식 부분 트리의 순회가 종료됩니다.

이로 인해 5번 노드를 탐색하고 그 뒤에는 5번 노드의 오른쪽 자식 부분 트리를 순회합니다.

4번 노드는 자식 노드가 없기 때문에 자기 자신을 탐색한 뒤에 순회를 종료합니다.

이로서 2번 노드의 왼쪽 자식 부분 트리의 순회가 종료하게 되어 2번 노드를 탐색하게 됩니다.

2번 노드를 탐색한 뒤에는 2번 노드의 오른쪽 자식 부분 트리를 순회합니다.

앞선 순회와 동일하게 왼쪽 자식을 먼저 탐색합니다.

6번 노드는 왼쪽 자식 노드가 없으므로 왼쪽 자식 부분 트리가 종료되고 자기 자신인 6번 노드를 탐색합니다.

6번 노드를 탐색한 뒤에는 6번 노드의 오른쪽 자식 부분 트리를 순회하면서 6번 노드의 부분 트리에서 순회를 종료합니다.

이러한 과정을 거쳐 1번 노드, 3번 노드를 차례로 탐색하며 중위 순회를 종료합니다.

따라서 주어진 예시에서 중위 순회를 하는 순서는 5 →\rightarrow 4 →\rightarrow 2 →\rightarrow 6 →\rightarrow 8 →\rightarrow 7 →\rightarrow 1 →\rightarrow 3 입니다.


제한 사항

  • childNodes는 각 노드의 왼쪽과 오른쪽 자식 노드 정보를 담는 이차원 배열입니다.
    • 배열의 길이는 2 이상 100,000 이하입니다.
    • childNodes[i - 1]는 i번 노드의 왼쪽과 오른쪽 자식 노드의 번호를 담은 배열입니다.
      • childNodes[i - 1][0]은 i번 노드의 왼쪽 자식 번호를 의미합니다.
      • childNodes[i - 1][1]은 i번 노드의 오른쪽 자식 번호를 의미합니다.
      • 만일 왼쪽 또는 오른쪽 자식 노드가 없다면 해당 노드 번호는 -1로 표기됩니다.

예시 테스트케이스 설명

테스트케이스 번호 childNodes return
1 [[2,3],[5,7],[-1,-1],[-1,-1],[-1,4],[-1,8],[6,-1],[-1,-1]] [5,4,2,6,8,7,1,3]
2 [[8,6],[-1,-1],[5,-1],[-1,-1],[-1,-1],[10,9],[2,-1],[4,-1],[7,3],[-1,-1]] [4,8,1,10,6,2,7,9,5,3]
3 [[5,-1],[3,-1],[-1,-1],[-1,2],[-1,4]] [5,4,3,2,1]

1번 테스트케이스 설명

  • 개념 설명에서 제시된 예시와 동일합니다.

2번 테스트케이스 설명

  • 중위 순회 결과는 아래와 같습니다.
    4 →\rightarrow 8 →\rightarrow 1 →\rightarrow 10 →\rightarrow 6 →\rightarrow 2 →\rightarrow 7 →\rightarrow 9 →\rightarrow 5 →\rightarrow 3

3번 테스트케이스 설명

  • 중위 순회 결과는 아래와 같습니다.
    5 →\rightarrow 4 →\rightarrow 3 →\rightarrow 2 →\rightarrow 1