트리 복구
시간 제한1초메모리 제한128 MB
이진 트리의 전위 순회와 중위 순회 문자열이 주어질 때, 후위 순회를 출력한다. 입력은 파일 끝까지 이어진다.
문제
창영이는 이진 트리를 매우 좋아한다. 그가 가장 좋아하는 놀이는 이진 트리를 하나 만든 뒤, 각 노드에 알파벳 대문자를 하나씩 적어 넣는 것이다. 같은 알파벳을 두 노드 이상에 쓰지는 않으므로, 모든 노드의 글자는 서로 다르다.
다음은 창영이가 만든 이진 트리의 한 예이다.
D
/ \
/ \
B E
/ \ \
/ \ \
A C G
/
/
F
창영이는 만든 트리를 나중에 다시 떠올릴 수 있도록 종이에 적어 둔다. 이때 트리를 전위 순회(preorder) 한 결과와 중위 순회(inorder) 한 결과를 적는다. 위 트리를 전위 순회하면 DBACEGF, 중위 순회하면 ABCDEFG가 된다. 이 두 순회 결과만 있으면 트리를 유일하게 복원할 수 있다고 생각했기 때문에, 후위 순회(postorder) 결과는 따로 적지 않았다.
여러 해가 지난 뒤 종이를 보고 트리를 다시 만들려 하는데, 손으로 하기가 번거로워 프로그램을 작성하기로 했다. 어떤 트리의 전위 순회 결과와 중위 순회 결과가 주어질 때, 그 트리의 후위 순회 결과를 구하는 프로그램을 작성하시오.
입력
입력은 하나 이상의 테스트 케이스로 이루어진다.
각 테스트 케이스는 한 줄이며, 트리의 전위 순회 결과와 중위 순회 결과가 공백 하나로 구분되어 주어진다. 두 문자열의 길이는 항상 같고, 각각 대문자 알파벳으로만 이루어지며 길이는 26을 넘지 않는다. 입력은 파일의 끝(EOF)까지 계속된다.
출력
각 테스트 케이스마다 주어진 트리의 후위 순회 결과를 한 줄에 하나씩 출력한다.