반응형
해당 문제는 이진 트리의 전위 순회, 중위 순회, 후위 순회를 이해하고 있는지에 대한 문제라고 생각한다.
재귀를 이용해서 문제를 풀어 나갔는데, edge의 node들을 defaultdict에 리스트 형태로 저장해서 탐색을 진행해 나갔다.
순회하는 방식은 동일하지만 언제 출력을 진행하는 가에 차이에 따라 전위, 중위, 후위가 결정 된다.
그래서 아래의 함수를 보면 동일한 방식을 채택하고 있지만, 출력문의 위치만 다른 것을 볼 수 있다.
def pre_order(n):
if n != '.':
print(n, end='')
pre_order(edge[n][0])
pre_order(edge[n][1])
def in_order(n):
if n != '.':
in_order(edge[n][0])
print(n, end='')
in_order(edge[n][1])
def post_order(n):
if n != '.':
for v in edge[n]:
post_order(v)
print(n, end='')
from collections import defaultdict
V = int(input())
edge = defaultdict(list)
for _ in range(V):
parent, *child = input().split()
edge[parent] = child
pre_order('A')
print()
in_order('A')
print()
post_order('A')
이 글이 도움 되셨다면,
반응형
'IT 톺아보기 > 알고리즘' 카테고리의 다른 글
2022년 4차 Softeer 정기 역량 진단 코딩테스트 후기 (0) | 2022.09.07 |
---|---|
[백준 15686번 | 삼성 SW 역량 테스트 기출] 치킨 배달 - python (0) | 2022.09.01 |
백준 2004번 조합 0개의 개수 - python (0) | 2022.06.20 |
[python]백준 21610번 - 마법사 상어와 비바라기 (feat. 삼성 SW 역량 테스트 기출 문제) (0) | 2021.12.02 |
[python]백준 14888번 - 연산자 끼워넣기(feat. 삼성 SW 역량 테스트 기출 문제) (0) | 2021.12.02 |