#문제링크
https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
#나의풀이
import sys
def preorder(root):
if root != '.':
print(root, end='')
preorder(tree[root][0])
preorder(tree[root][1])
def inorder(root):
if root != '.':
inorder(tree[root][0])
print(root, end='')
inorder(tree[root][1])
def postorder(root):
if root != '.':
postorder(tree[root][0])
postorder(tree[root][1])
print(root, end='')
if __name__=="__main__":
N = int(sys.stdin.readline())
tree = {}
for i in range(N):
root, left, right = sys.stdin.readline().strip().split()
tree[root] = [left, right]
preorder('A')
print()
inorder('A')
print()
postorder('A')
#해설
트리의 가장 기본적인 문제일려나? 트리문제는 별로 풀어보지 않아서 풀어보았다.
기본적인 방법은 알고 있는데 파이썬으로 어떻게 구현해야할지 감이 안와서 다른사람들을 참고 했다.
N = int(sys.stdin.readline())
tree = {}
for i in range(N):
root, left, right = sys.stdin.readline().strip().split()
tree[root] = [left, right]
사실상 문제에서 가장 중요한 부분이 아닐까 싶다 트리를 구성하는 부분인데 딱히 특이한 부분은 없고
딕셔너리로 root의 left값과 right값을 넣어주고 이 값을 바탕으로 방문하게 된다.
전위, 중위, 후위 설명은 생략하겠다.
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 1446 지름길 (0) | 2023.01.12 |
---|---|
[백준/파이썬] 1068 트리 (0) | 2023.01.10 |
[백준/파이썬] 15724 주지수 (0) | 2023.01.10 |
[백준/파이썬] 2468 안전영역 (0) | 2023.01.06 |
[백준/파이썬] 19640 화장실의 규칙 (0) | 2023.01.06 |