링크 : https://www.acmicpc.net/problem/1991
1991번: 트리 순회
첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파
www.acmicpc.net
- 문제
- 소요시간: 연습문제
- 설계하기(접근방법)
1. 입력받기
트리를 딕셔너리로 입력받는다
2. 구현하기
전위 순회
중위 순회
후위 순회를 구현한다
각 함수마다
루트노드가 프린트되는
위치를 달리하면 된다
3. 출력하기
루트 노드를 출력한다
- 코드(출력)
import sys
input = sys.stdin.readline
n = int(input())
tree = {}
for i in range(n):
root , left, right = input().rstrip().split()
tree[root] = [left,right]
def preorder(root):
if root != '.':
print(root, end = '')
preorder(tree[root][0])
preorder(tree[root][1])
def inorder(root):
if root != '.':
inorder(tree[root][0])
print(root, end = '')
inorder(tree[root][1])
def postorder(root):
if root != '.':
postorder(tree[root][0])
postorder(tree[root][1])
print(root, end = '')
preorder('A')
print()
inorder('A')
print()
postorder('A')
- 얻어갈 부분
1. 트리를 딕셔너리로 입력받고 전위 후위 중위 순회의 구조를 배웠다