본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[백준] 1991. 트리 순회 - Python

by chaemj97 2022. 8. 1.
728x90

https://www.acmicpc.net/problem/1991

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파

www.acmicpc.net


from sys import stdin
from collections import deque
input = stdin.readline

# 전위 순회, 중위 순회, 후위 순회 결과 출력

# 노드의 개수
N = int(input())

# 연결 노드
node = [[] for _ in range(N+1)]
# 부모 노드 번호
parent = [0 for _ in range(N+1)]

for _ in range(N-1):
    a, b = map(int,input().split())
    node[a].append(b)
    node[b].append(a)

# 부모 찾기
que = deque()
que.append(1)
while que:
    n = que.popleft()
    # n번 노드랑 연결된 노드들
    for i in node[n]:
        # 부모가 정해지지 않았다면 n이 부모
        if parent[i] == 0:
            parent[i] = n
            que.append(i)

# 부모 노드 번호 출력
for j in parent[2:]:
    print(j)
728x90
반응형

댓글