본문 바로가기

CodingTest/Baekjun Online Judge

[ BOJ / 파이썬 ] 1991 트리 순회

재귀 진짜 너무 안 된다.

머리가 안 도는건가.

 

https://fre2-dom.tistory.com/231

 

[baekjoon] 백준 1991번(파이썬): 트리 순회

문제 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름

fre2-dom.tistory.com

라고 우울해했었으나,

저녁 먹고

재귀 몇 문제 더 보고 다시 오니까 이해가 된다.

다시 으쌰으쌰해서 풀어봤다.


/  제출 1  /

 

import sys
input = sys.stdin.readline
n = int(input())

tree = {}
start =''
for i in range(n):
  node, left, right = input().split()
  tree[node] = [left, right]
  if i == 0:
    start = node

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="")

preorder(start)
print('')
inorder(start)
print('')
postorder(start)

 

참 기초 중의 기초 알고리즘인데.. 2학년때 배웠던 건데 이제야 하고 있네. 늦었다고 아예 망한 건 아니니까. 부랴부랴 달려나가자.