아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

유사 중위 순회

면접 대비

시간 제한1초메모리 제한1024 MB

요약
루트에서 시작해 중위 순회와 비슷하게 움직이는 탐색을 그대로 시뮬레이션하면서 노드 사이를 이동한 총 횟수를 센다.
난이도

보통10점 중 4점

유형
트리, DFS, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

노드가 NN개인 이진 트리가 있다. 이 트리를 중위 순회와 비슷한 방식으로 순회하려고 하며, 이를 유사 중위 순회라고 하자.

순회는 트리의 루트에서 시작하고, 중위 순회를 할 때 마지막으로 방문하는 노드에서 끝난다. 루트 노드는 항상 1번 노드이다.

유사 중위 순회는 루트 노드에서 시작해 다음 규칙에 따라 진행된다.

  1. 현재 위치한 노드의 왼쪽 자식 노드가 존재하고 아직 방문하지 않았다면, 왼쪽 자식 노드로 이동한다.
  2. 그렇지 않고 현재 위치한 노드의 오른쪽 자식 노드가 존재하고 아직 방문하지 않았다면, 오른쪽 자식 노드로 이동한다.
  3. 그렇지 않고 현재 노드가 유사 중위 순회의 끝이라면, 유사 중위 순회를 종료한다.
  4. 그렇지 않고 부모 노드가 존재한다면, 부모 노드로 이동한다.
  5. 유사 중위 순회를 종료할 때까지 1 ~ 4를 반복한다.

위 그림에 있는 트리를 중위 순회하면 4→2→5→1→6→3→74 \rightarrow 2 \rightarrow 5 \rightarrow 1 \rightarrow 6 \rightarrow 3 \rightarrow 7 순으로 방문한다.

따라서 유사 중위 순회의 끝은 노드 7이다.

유사 중위 순회는 위 그림과 같이 루트인 노드 11에서 시작해 노드 77에서 끝나며, 1→2→4→2→5→2→1→3→6→3→71 \rightarrow 2 \rightarrow 4 \rightarrow 2 \rightarrow 5 \rightarrow 2 \rightarrow 1 \rightarrow 3 \rightarrow 6 \rightarrow 3 \rightarrow 7 순서로 진행된다. 유사 중위 순회를 진행하면서 총 10번 이동하였다.

여기서 이동이란 하나의 노드에서 다른 노드로 한 번 움직이는 것을 뜻한다. 예를 들어 노드 1에서 노드 2로 가는 것은 한 번 이동한 것이다.

유사 중위 순회를 하면서 이동한 횟수를 구하려고 한다.

입력

첫 번째 줄에 트리를 구성하는 노드의 개수 NN이 주어진다.

두 번째 줄부터 N+1N + 1 번째 줄까지 현재 노드 aa, 현재 노드의 왼쪽 자식 노드 bb, 현재 노드의 오른쪽 자식 노드 cc가 공백으로 구분되어 주어진다. 자식 노드의 번호가 -1인 경우 자식 노드가 없다는 것을 의미한다.

출력

유사 중위 순회를 하면서 이동한 총 횟수를 출력한다.

제한

  • 1≤N≤100,0001 \le N \le 100,000
  • 1≤a,b≤N1 \le a, b \le N

예제2

  1. 예제 1

    입력
    7
    1 2 3
    2 4 5
    3 6 7
    4 -1 -1
    5 -1 -1
    6 -1 -1
    7 -1 -1
    
    예상 출력
    10
    
  2. 예제 2

    입력
    1
    1 -1 -1
    
    예상 출력
    0