문제의 저작권은 SW Expert Academy에 있습니다.
풀이
트리를 받을 땐 chs라는 이중포문에 n1이 부모일 때 n2값을 left, right값으로 받아서 넣었다.
트리를 preorder하면서 지정된 루트 아래에 있는 값들을 모두 순회했다.
def preorder(n):
global count
if n > 0:
count += 1
preorder(chs[0][n])
preorder(chs[1][n])
T = int(input())
for tc in range(1, T+1):
count = 0
result = 0
E, N = map(int, input().split())
values = list(map(int, input().split()))
chs = [[0] * (E + 2) for _ in range(2)]
for i in range(E):
n1, n2 = values[i*2], values[i*2+1]
# left
if chs[0][n1] == 0:
chs[0][n1] = n2
# right
else:
chs[1][n1] = n2
preorder(N)
print(("#{} {}".format(tc, count)))
```