1991번 : 트리 순회 - Python

FriOct·2023년 4월 10일
0

PS

목록 보기
63/108

문제

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

풀이

트리를 딕셔너리에 {노드:[leftchild, rightchild]}로 저장을 한다. 그리고 왼쪽과 오른쪽을 제귀함수로 호출한다.
inorder는 (왼쪽 자식)/(노드)/(오른쪽 자식)
preorder는 (노드)/(왼쪽 자식)/(오른쪽 자식)
postorder는 (왼쪽 자식)/(오른쪽 자식)/(노드)
로 출력하기 때문에 이 순서대로 제귀 호출과 print를 작성한다.

코드

from sys import stdin

n = int(input())
tree = {}

def preorder(node):
    if(node!='.'):
        print(node,end='')
        preorder(tree[node][0])
        preorder(tree[node][1])

def inorder(node):
    if(node!='.'):
        inorder(tree[node][0])
        print(node,end='')
        inorder(tree[node][1])

def postorder(node):
    if(node!='.'):
        postorder(tree[node][0])
        postorder(tree[node][1])
        print(node,end='')




for i in range(n):
    node, left, right = input().split()
    tree[node] = [left,right]


preorder('A')
print()
inorder('A')
print()
postorder('A')
profile
꿈 많은 개발자

0개의 댓글