백준 1991 트리순회 / python

이후띵·2021년 11월 24일
0

백준

목록 보기
6/12

전위 순회 : 루트, 왼, 오
중위 순회 : 왼, 루트, 오
후위 순회 : 왼, 오, 루트

딕셔너리 타입으로 데이터를 받는다.
key = 루트, value = [left, right]
각 순회별로, 루트를 출력하는 위치를 정한다.
왼쪽 (or 오른쪽) 노드가 존재하면, 그 값을 루트노드로 하는 재귀함수를 실행한다.

  • 재귀함수는 자식이 없는 단말 노드에 도착하면, 마지막으로 출력하고 끝남.
import sys

n = int(sys.stdin.readline())
dic = {}
for i in range(n):
    root, left, right = sys.stdin.readline().split()
    dic[root] = [left, right]
print(dic)


def preorder(x):
    print(x, end="")
    if dic[x][0] != ".":
        preorder(dic[x][0])
    if dic[x][1] != ".":
        preorder(dic[x][1])


def inorder(x):
    if dic[x][0] != ".":
        inorder(dic[x][0])
    print(x, end="")
    if dic[x][1] != ".":
        inorder(dic[x][1])


def postorder(x):
    if dic[x][0] != ".":
        postorder(dic[x][0])
    if dic[x][1] != ".":
        postorder(dic[x][1])
    print(x, end="")


preorder('A')
print()
inorder('A')
print()
postorder('A')
profile
이후띵's 개발일지

0개의 댓글