아이디어:
전위순회, 중위순회, 후위순회를 재귀로 구현하는 기본적인 문제이다.
중간에 if 문으로 '.'이 아닌 것을 확인해야 하는데, 처음에 이걸 print하기 전에만 해놔가지고 index에러가 났었다.
import sys
N = int(sys.stdin.readline())
graph = [[]for _ in range(N)]
for _ in range(N):
node, left, right = sys.stdin.readline().split()
graph[ord(node)-65] = [left, right]
def preorder(x):
if (x!='.'):
print(x, end="")
xx = ord(x)-65
preorder(graph[xx][0])
preorder(graph[xx][1])
def inorder(x):
if (x!="."):
xx = ord(x)-65
inorder(graph[xx][0])
print(x, end="")
inorder(graph[xx][1])
def postorder(x):
if (x!="."):
xx = ord(x)-65
postorder(graph[xx][0])
postorder(graph[xx][1])
print(x, end="")
preorder('A')
print()
inorder('A')
print()
postorder('A')
'알고리즘💻 > 트리' 카테고리의 다른 글
BOJ 2263번: 트리의 순회 (0) | 2021.02.09 |
---|---|
BOJ 1967번: 트리의 지름 (0) | 2021.02.08 |
BOJ 5639번: 이진 검색 트리 (0) | 2021.02.08 |
BOJ 11725번: 트리의 부모 찾기 (0) | 2021.02.08 |
BOJ 1068번: 트리 (0) | 2021.02.08 |