https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
아이디어
- 간단하다. 트리의 간선 정보가 있고, 이를 이용해서 트리의 왼쪽, 오른쪽 자식을 넣어주고
- 전위든 중위든 후위든 탐색하여 1씩 더하면 된다.
풀이
cnt = 0
def inorder(v):
global cnt
if v == 0:
return
inorder(L[v])
cnt += 1
inorder(R[v])
return cnt
for tc in range(int(input())):
E, N = map(int, input().split())
arr = list(map(int, input().split()))
tree = [0] * (E + 2)
L = [0] * (E + 2)
R = [0] * (E + 2)
P = set()
for i in range(0, E * 2, 2):
parent, child = arr[i], arr[i + 1]
if L[parent] == 0:
L[parent] = child
else:
R[parent] = child
P.add(child)
print(f'#{tc+1} {inorder(N)}')
cnt = 0
'SWEA' 카테고리의 다른 글
SWEA 1232 사칙연산 (파이썬) (0) | 2022.09.15 |
---|---|
SWEA 5176 이진탐색 (파이썬) (0) | 2022.09.13 |
SWEA 1289 원재의 메모리 복구하기 (파이썬) (0) | 2022.08.28 |
SWEA 1220 Magnetic (파이썬) (0) | 2022.08.25 |
SWEA 11315 오목 판정 (파이썬) (0) | 2022.08.25 |