알고리즘/백준(BOJ)

[백준/알고리즘] #1991: 트리순회 [파이썬(python)/트리]

https://www.acmicpc.net/problem/1991

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파

www.acmicpc.net

#1991_트리순회
import sys
input = sys.stdin.readline

N = int(input())


def preorder(root):
    if root != '.':
        print(root, end='')
        preorder(tree[root][0])#left
        preorder(tree[root][1])#right

def inorder(root): #중위
    if root!='.':
        inorder(tree[root][0])#left
        print(root,end='')
        inorder(tree[root][1])#right

def postorder(root):#후위
    if root!='.':
        postorder(tree[root][0])
        postorder(tree[root][1])
        print(root,end='')

tree={}
for _ in range(N):
    root, left, right = input().strip().split()
    tree[root]=[left, right]

preorder('A')
print()
inorder('A')
print()
postorder('A')

전위순회/ 중위순회/ 후위순회 개념을 복습해서 이해하면 풀 수 있다!