전공/백준
1991
yha97
2023. 5. 15. 10:05
날짜 : 2023. 05. 15
사용 언어 : python
문제
코드
import sys
sys.setrecursionlimit(int(10**6))
def preorder(node): # 전위순회(Root, Left, Right)
print(tree[node][1], end="") # root
if tree[node][0] != '.': # left
preorder(tree[node][0])
if tree[node][2] != '.': # right
preorder(tree[node][2])
return
def inorder(node): # 중위순회(Left, Root, Right)
if tree[node][0] != '.':
inorder(tree[node][0])
print(tree[node][1], end="")
if tree[node][2] != '.': # right
inorder(tree[node][2])
return
def postorder(node): # 후위순회(Left, Right, Root)
if tree[node][0] != '.':
postorder(tree[node][0])
if tree[node][2] != '.': # right
postorder(tree[node][2])
print(tree[node][1], end="")
return
n = int(sys.stdin.readline())
tree = dict()
for _ in range(n):
root, l, r = sys.stdin.readline().rstrip().split()
tree[root] = (l, root, r)
#print(tree)
preorder('A')
print()
inorder('A')
print()
postorder('A')
풀이
- 전위, 후위, 중위순회를 구현
- root, left, right를 입력받은 후 해시에 저장한 다음 조건에 맞게 재귀 방식으로 출력한다.
알게된 점
- 강의 들으면서 푸니까 뇌를 빼고 푸는거같다;;
참고 사이트
-