-
[백준] 1991번 문제 (트리 순회) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 9. 6. 10:53
https://www.acmicpc.net/problem/1991
import sys input = sys.stdin.readline class Node: def __init__(self, item, left, right): self.item = item self.left = left self.right = right def preorder(node): print(node.item, end="") if node.left != '.': preorder(tree[node.left]) if node.right != '.': preorder(tree[node.right]) def inorder(node): if node.left != '.': inorder(tree[node.left]) print(node.item, end="") if node.right != '.': inorder(tree[node.right]) def postorder(node): if node.left != '.': postorder(tree[node.left]) if node.right != '.': postorder(tree[node.right]) print(node.item, end="") n = int(input()) tree = {} for _ in range(n): node, left, right = map(str, input().split()) tree[node] = Node(item=node, left=left, right=right) preorder(tree['A']) print() inorder(tree['A']) print() postorder(tree['A'])
이 문제는 트리 자료구조와 트리의 순회에 관한 지식을 미리 알고 있어야 하고, 알고 있다면 어렵지 않게 풀 수 있는 문제다. (모른다면, 아래 글 참고)
https://honggom.tistory.com/40?category=863994
굳이 클래스를 만들어서 풀 필요는 없으나 가독성과 더 편한 이해를 위해 클래스로 노드 형태를 만들어 주었고, 입력받은 문자들로 트리를 구성후, 전, 중, 후위 순회의 결과를 출력해줬다.
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 1654번 문제 (랜선 자르기) 파이썬(Python) 풀이 (0) 2021.09.06 [백준] 11725번 문제 (트리의 부모 찾기) 파이썬(Python) 풀이 (0) 2021.09.06 [백준] 2178번 문제 (미로 탐색) 파이썬(Python) 풀이 (0) 2021.09.06 [백준] 7576번 문제 (토마토) 파이썬(Python) 풀이 (0) 2021.09.06 [백준] 4963번 문제 (섬의 개수) 파이썬(Python) 풀이 (0) 2021.09.06