티스토리 뷰

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

 

1991번: 트리 순회

첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
= int(input())
tree = dict()
for _ in range(n):
    parent, left, right = input().split()
    tree[parent] = [left, right]
 
 
def preorder(node):
    print(node, end='')
    if tree[node][0!= '.':
        preorder(tree[node][0])
    if tree[node][1!= '.':
        preorder(tree[node][1])
 
 
def inorder(node):
    if tree[node][0!= '.':
        inorder(tree[node][0])
    print(node, end='')
    if tree[node][1!= '.':
        inorder(tree[node][1])
 
 
def postorder(node):
    if tree[node][0!= '.':
        postorder(tree[node][0])
    if tree[node][1!= '.':
        postorder(tree[node][1])
    print(node, end='')
 
 
preorder('A')
print()
inorder('A')
print()
postorder('A')
print()
cs

그냥 하라는대로 하면 된다.

재귀를 이용해서 탐색하는데, 탐색하는 순서를 조정해주면 된다. 별거 없다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함