본문 바로가기
Problem Solving/Tree

[트리] 백준 1991번: 트리 순회 / 실버 1

by ggyongi 2021. 6. 14.
반응형

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

 

1991번: 트리 순회

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

www.acmicpc.net

class Node:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def bTree(node):
    if node.val == '.':
        return None
    node.left = bTree(Node(link[node.val][0]))
    node.right = bTree(Node(link[node.val][1]))
    return node

n = int(input())
link = {}
for _ in range(n):
    node, left, right = map(str, input().split())
    link[node] = (left, right)

head = Node('A')
mTree = bTree(head)

global preord
global inord
global postord
preord = ""
inord = ""
postord = ""
def preorder(node):
    global preord
    if node:
        preord += node.val
        preorder(node.left)
        preorder(node.right)

def inorder(node):
    global inord
    if node:
        inorder(node.left)
        inord += node.val
        inorder(node.right)

def postorder(node):
    global postord
    if node:
        postorder(node.left)
        postorder(node.right)
        postord += node.val

preorder(head)
inorder(head)
postorder(head)

print(preord)
print(inord)
print(postord)

기본적이면서도 중요한 문제다!

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글