코딩고치

[파이썬][백준] 1991번: 트리 순회 본문

파이썬/백준 문제

[파이썬][백준] 1991번: 트리 순회

코딩고치 2020. 6. 5. 22:16

1. 문제

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

 

1991번: 트리 순회

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

www.acmicpc.net

문제 유형: 트리

 

 

2. 소스코드

import sys


class Node:
    def __init__(self, data, left, right):
        self.data = data
        self.left = left
        self.right = right


def preorder(node):
    print(node.data, 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.data, 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.data, end='')


n = int(sys.stdin.readline())
tree = {}
for i in range(n):
    data, left, right = map(str, sys.stdin.readline().split())
    tree[data] = Node(data, left, right)

preorder((tree['A']))
print()
inorder(tree['A'])
print()
postorder(tree['A'])
print()
Comments