문제
풀이
간단하게 딕셔너리 형태로 트리를 구현했다.
예제 입력으로 생성된 트리는 다음의 형태를 보인다.
tree = {'A' : ['B', 'C'], 'B' : ['D', '.'], 'C' : ['E', 'F'], 'E' : ['.', '.'], 'F' : ['.', 'G'], 'D' : ['.', '.'], 'G' : ['.', '.']}
순회는 모두 재귀 형식으로 구현했으며, print문의 위치에 주의하도록 한다.
코드
import sys
sys.setrecursionlimit(10**6)
def preorder(node):
if node != '.':
print(node, end = '')
preorder(tree[node][0])
preorder(tree[node][1])
if node == 'A':
print()
def inorder(node):
if node != '.':
inorder(tree[node][0])
print(node, end = '')
inorder(tree[node][1])
if node == 'A':
print()
def postorder(node):
if node != '.':
postorder(tree[node][0])
postorder(tree[node][1])
print(node, end = '')
if node == 'A':
print()
n = int(sys.stdin.readline().strip())
tree = {}
for _ in range(n):
root, left, right = sys.stdin.readline().split()
tree[root] = [left, right]
preorder('A')
inorder('A')
postorder('A')
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준] 1929 - 소수구하기 [Python(파이썬)] (0) | 2021.01.23 |
---|---|
[백준] 1949 - 우수 마을 [Python(파이썬)] (0) | 2021.01.20 |
[백준] 1912 - 연속합 [Python(파이썬)] (0) | 2021.01.19 |
[백준] 11403 - 경로 찾기 [Python(파이썬)] (0) | 2021.01.16 |
[백준] 2133 - 타일 채우기 [Python(파이썬)] (0) | 2021.01.16 |