https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 그래프
  • 최단경로
  • heapq
  • 12015
  • 최대공약수
  • 프로그래머스
  • counter
  • 최소힙
  • 백트래킹
  • 이분 탐색
  • MST
  • Python
  • 큐
  • python3
  • LIS
  • 다익스트라
  • 다이나믹프로그래밍
  • 파이썬
  • 유클리드호제법
  • 재귀
  • 그리디
  • 재귀함수
  • 유니온 파인드
  • BFS
  • 백준
  • 이분탐색
  • 다이나믹 프로그래밍
  • DP
  • DFS
  • 스택

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

알고리즘

[python3] 백준 1991 (트리 순회, 트리, 재귀)

2022. 3. 26. 09:19

이번 문제는 순회 문제이다. 처음에는 트리를 어떻게 푸는지 몰라서 헤맸는데 어제 영상을 봤더니 쉽게 이해가 갔다.

https://www.youtube.com/watch?v=QN1rZYX6QaA 

 

정리하자면 

pre order = root, left, right 순서

in order = left, root, right 순서

post order = left, right, root 순서

따라서 순서만 기억해도 나중에 쉽게 떠올릴 수 있다. 이걸 토대로 문제를 풀면 아래와 같다.

adj = {}
N = int(input())

for i in range(N):
    A, B, C = input().split()
    if A not in adj:
        adj[A] = [B, C]

# 전위 순회 [root, left, right]
def recur(node, order):
    if node == '.':
        return
    left, right = adj[node]
    if order == 1:
        print(node, end="")
    recur(left, order)
    if order == 2:
        print(node, end="")
    recur(right, order)
    if order == 3:
        print(node, end="")

recur('A', 1)
print()
recur('A', 2)
print()
recur('A', 3)
print()
저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[python3] 백준 1039 (교환, BFS)  (0) 2022.05.22
[python3] 백준 11000 (강의실 배정, 최소힙, 그리디)  (0) 2022.05.08
[python3] 1167 풀이 (트리의 지름, 트리, DFS)  (0) 2022.03.25
[python] 조합을 DFS로 구하기  (0) 2022.03.25
[python3] Trie 구현  (0) 2022.03.19
    '알고리즘' 카테고리의 다른 글
    • [python3] 백준 1039 (교환, BFS)
    • [python3] 백준 11000 (강의실 배정, 최소힙, 그리디)
    • [python3] 1167 풀이 (트리의 지름, 트리, DFS)
    • [python] 조합을 DFS로 구하기
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바