https://www.acmicpc.net/problem/1991
import sys
class Node:
def __init__(self,data,left_node,right_node):
self.data=data
self.left_node=left_node
self.right_node=right_node
nodes={}
def pre_order(node):
print(node.data,end='')
if node.left_node!=None:
pre_order(nodes[node.left_node])
if node.right_node!=None:
pre_order(nodes[node.right_node])
def in_order(node):
if node.left_node!=None:
in_order(nodes[node.left_node])
print(node.data,end='')
if node.right_node!=None:
in_order(nodes[node.right_node])
def post_order(node):
if node.left_node != None:
post_order(nodes[node.left_node])
if node.right_node != None:
post_order(nodes[node.right_node])
print(node.data,end='')
n=int(sys.stdin.readline())
for i in range(n):
data,left_node,right_node=sys.stdin.readline().split()
if left_node==".":
left_node=None
if right_node==".":
right_node=None
nodes[data]=Node(data,left_node,right_node)
pre_order(nodes['A'])
print()
in_order(nodes['A'])
print()
post_order(nodes['A'])
전형적인 트리 전위,중위,후위 순회 알고리즘을 사용하여 푼 문제였다.
'알고리즘||코딩테스트 > 백준' 카테고리의 다른 글
[백준 24479번] 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2023.06.26 |
---|---|
[백준 9934번] 완전 이진 트리 (Silver1) (0) | 2023.06.24 |
14244번 트리 만들기 (Silver4) (0) | 2023.06.23 |
1806번 부분합(Gold4) (0) | 2023.06.23 |
25682번 체스판 다시 칠하기2 (Gold5) (0) | 2023.06.22 |