728x90
https://www.acmicpc.net/problem/1991
문제
이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오.
코드
- dictionary에 parent: [left, right]를 추가하여 순회
- Tree를 직접 구현해서 풀다가 postorder가 안되서 포기
import sys
def preorder(root):
if root != '.':
print(root,end='')
preorder(tree[root][LEFT])
preorder(tree[root][RIGHT])
def inorder(root):
if root != '.':
inorder(tree[root][LEFT])
print(root, end='')
inorder(tree[root][RIGHT])
def postorder(root):
if root != '.':
postorder(tree[root][LEFT])
postorder(tree[root][RIGHT])
print(root, end='')
input = sys.stdin.readline
N = int(input())
LEFT, RIGHT = 0, 1
tree = {}
for _ in range(N):
root, left, right = input().split()
tree[root] = [left,right]
preorder('A')
print()
inorder('A')
print()
postorder('A')
728x90
'Algorithm & Data Structure > Baekjoon' 카테고리의 다른 글
[Baekjoon/python] 별 찍기 - 11 #2448 (0) | 2023.06.21 |
---|---|
[Baekjoon/python] 벽 부수고 이동하기 #2206 (0) | 2023.06.19 |
[Baekjoon/python] 알파벳 #1987 (0) | 2023.06.14 |
[Baekjoon/python] 정수 삼각형 #1932 (0) | 2023.06.12 |
[Baekjoon/python] 후위표기식 #1918 (0) | 2023.06.10 |