본문 바로가기
PS/solved.ac

[CLASS 4]백준 1991번 - 트리 순회

by DawIT 2021. 3. 9.
320x100

1991번 : 트리 순회

 

트리를 순회하는 세 가지 방법을 구현하면 된다. 재귀로 구현하되 탐색 순서(answer문자열에 노드를 추가하는 순서)만 달리해주면 쉽게 구현할 수 있다.

 

내 코드:

# dawitblog.tistory.com
from sys import stdin
input = stdin.readline

dic = {}
def preOrder(node):
    global answer

    answer += node
    if dic[node][0] != '.':
        preOrder(dic[node][0])
    if dic[node][1] != '.':
        preOrder(dic[node][1])

def inOrder(node):
    global answer

    if dic[node][0] != '.':
        inOrder(dic[node][0])
    answer += node
    if dic[node][1] != '.':
        inOrder(dic[node][1])

def postOrder(node):
    global answer

    if dic[node][0] != '.':
        postOrder(dic[node][0])
    if dic[node][1] != '.':
        postOrder(dic[node][1])
    answer += node

for _ in range(int(input())):
    conn = input().split()
    dic[conn[0]] = (conn[1],conn[2])

answer = ''
preOrder('A')
print(answer)

answer = ''
inOrder('A')
print(answer)

answer = ''
postOrder('A')
print(answer)

 

탐색 순서에 따라 answer += node 의 위치가 바뀐다.

댓글