IT recording...
[BOJ] 1991 트리 순회 - python 본문
최종 코드
import sys
def input():
return sys.stdin.readline().rstrip()
N = int(input())
#트리구성 -> key : root, value : [left,right]
tree = {}
for _ in range(N):
root,left,right = input().split(" ")
tree[root] = [left,right]
def preorder(root):
if root != '.':
print(root, end='') #root
preorder(tree[root][0]) #left
preorder(tree[root][1]) #right
def inorder(root):
if root != '.':
inorder(tree[root][0]) #left
print(root, end='') #root
inorder(tree[root][1]) #right
def postorder(root):
if root != '.':
postorder(tree[root][0]) #left
postorder(tree[root][1]) #right
print(root, end='') #root
preorder('A')
print()
inorder('A')
print()
postorder('A')
- 전위순회, 중위순회, 후위순회
-
#전위순회(preorder) : Root Left Right #중위순회(inorder) : Left Root Right #후위순회(postorder) : Left Right Root ------------------------------------------------------ def preorder(root): if root != '.': #'.'리프 노드일 때는 그냥 return print(root, end='') #root preorder(tree[root][0]) #left preorder(tree[root][1]) #right def inorder(root): if root != '.': inorder(tree[root][0]) #left print(root, end='') #root inorder(tree[root][1]) #right def postorder(root): if root != '.': postorder(tree[root][0]) #left postorder(tree[root][1]) #right print(root, end='') #root
느낀점
"211207"
소요 시간 : 20min
- tree 순회를 재귀함수를 이용하면 된다는 것 까지는 생각해냈지만 이를 어떻게 구현해야할지 몰라 정답을 보았다.
- root를 프린트하는데, 왼쪽,오른쪽을 어떤 순서로 방문할 것인가를 생각하면 되는 문제
'Algorithm' 카테고리의 다른 글
[BOJ] 2504 괄호의 값 - python (0) | 2021.12.15 |
---|---|
[BOJ] 6416 트리인가? - python (0) | 2021.12.07 |
[BOJ] 10828 스택 - python (0) | 2021.12.06 |
[BOJ] 7453 합이 0인 정수 - python (0) | 2021.12.02 |
[BOJ] 1072 두 배열의 합 - python (0) | 2021.12.02 |
Comments