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