Skip to main content

백준 1991 트리 순회

·97 words·1 min· loading

https://www.acmicpc.net/problem/1991

1991번: 트리 순회첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파www.acmicpc.net

트리를 처음 접했다.

유튜브에서 트리구조 강의를 보고 풀었다.

처음으로 클래스를 사용했다.

계속보다보니 신기하다.

전위순회= 루트-왼쪽-오른쪽

중위순회=왼쪽-루트-오른쪽

후위순회=왼쪽-오른쪽-루트

import sysinput=sys.stdin.readlineclass Node():
    def __init__(self,current_node,left_node,right_node):
        self.current=current_node        self.left=left_node
        self.right=right_nodedef 전위순회(node):    print(node.current,end='')
    if node.left !='.':        전위순회(tree[node.left])    if node.right !='.':
        전위순회(tree[node.right])def 중위순회(node):    if node.left !='.':
        중위순회(tree[node.left])    print(node.current,end='')
    if node.right !='.':        중위순회(tree[node.right])def 후위순회(node):
    if node.left !='.':        후위순회(tree[node.left])    if node.right !='.':
        후위순회(tree[node.right])    print(node.current,end='')n=int(input())
tree={}for _ in range(n):
    current_node,left_node,right_node=input().strip().split()
    tree[current_node]=Node(current_node,left_node,right_node)전위순회(tree["A"])
print()중위순회(tree["A"])print()후위순회(tree["A"])