백준 1991 파이썬 (트리 순회)

철웅·2023년 2월 23일
0

BOJ

목록 보기
43/46

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


💻 Code

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

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

tree = {}
N = int(input())
for i in range(N):
    value, left, right = input().split()
    if left == ".": left = None
    if right == ".": right = None
    tree[value] = Node(value, left, right)

preorder(tree['A'])
print()
inorder(tree['A'])
print()
postorder(tree['A'])
  • 파이썬에서 트리 -> 클래스와 딕셔너리 활용
  • preorder(tree['A']) : 키 값을 따옴표로 감싸기
  • preorder(tree[node.right]) : 재귀 할 때 node라고만 쓰는 일 없게 주의!

0개의 댓글