잘못 작성된 DFS
면접 대비시간 제한1초메모리 제한1024 MB
왼쪽 자식으로 두 번 재귀하는 버그가 있는 전위 DFS에서, 방문 횟수를 모두 세지 않고 K번째로 방문하는 노드를 찾는다.
문제
Yunee는 자료구조 과제를 하고 있다. Yunee는 이진 트리를 전위 순회하는 함수 DFS를 작성했다. 그런데 실수로 왼쪽 부분 트리에 DFS를 두 번 재귀 호출하는 코드를 작성하고 말았다.
function DFS(node v):
visit v
if v → left exists:
DFS(v → left)
DFS(v → left)
if v → right exists:
DFS(v → right)
Yunee의 DFS 의사 코드는 위와 같다. 이제 다음 예시를 보자.

위 트리를 전위 순회하면 노드 가 순서대로 방문된다. 그러나 Yunee의 DFS는 노드 를 순서대로 방문한다.
이진 트리가 주어졌을 때, Yunee의 DFS가 방문하는 번째 노드를 구하시오. 는 전체 방문 횟수보다 크지 않음이 보장된다. 노드는 부터 까지 번호가 붙어 있고, 루트 노드는 항상 번 노드이다.
입력
첫 번째 줄에 두 정수 과 가 주어진다. 은 트리의 노드 수를 나타낸다. 는 전체 방문 횟수보다 크지 않다.
다음 개의 줄은 트리를 나타낸다. 번째 줄에 두 정수 와 가 주어진다. 는 노드 의 왼쪽 자식, 는 노드 의 오른쪽 자식을 나타낸다. 해당하는 자식이 없으면 또는 대신 이 주어진다.
루트 노드는 항상 번 노드이다.
출력
Yunee의 DFS가 방문하는 번째 노드를 출력한다.