트리 순회를 구현하는 문제!
숫자가 아니라 알파벳으로 들어와서, 그걸 숫자로 바꿔주는 것만 신경쓰면 될 것 같다!
N = int(input()) # 노드의 개수
tree = list([0] * 2 for _ in range(N + 1)) # 왼쪽 자식, 오른쪽 자식
def pre_order(node): # 전위 순회
if node:
print(chr(node+64), end='') # 할 일
pre_order(tree[node][0]) # 왼쪽 자식
pre_order(tree[node][1]) # 오른쪽 자식
def mid_order(node): # 중위 순회
if node:
mid_order(tree[node][0]) # 왼쪽 자식
print(chr(node+64), end='') # 할 일
mid_order(tree[node][1]) # 오른쪽 자식
def rear_order(node): # 후위 순회
if node:
rear_order(tree[node][0]) # 왼쪽 자식
rear_order(tree[node][1]) # 오른쪽 자식
print(chr(node+64), end='') # 할 일
for i in range(N):
temp = list(input().split())
p = ord(temp[0]) - 64
c1 = ord(temp[1]) - 64
c2 = ord(temp[2]) - 64
if c1 == -18 and c2 != -18: # 첫번째 자식은 없고, 두번째 자식이 있으면
tree[p][0] = 0
tree[p][1] = c2
elif c1 != -18 and c2 == -18: # 첫번째 자식은 있고, 두번째 자식만 없으면
tree[p][0] = c1
tree[p][1] = 0
elif c1 == -18 and c2 == -18: # 두 자식 다 없으면
tree[p][0] = 0
tree[p][1] = 0
else:
tree[p][0] = c1
tree[p][1] = c2
pre_order(1)
print()
mid_order(1)
print()
rear_order(1)
728x90
'즐거운 PS 👩💻🥰' 카테고리의 다른 글
[백준-파이썬] 2174: 로봇 시뮬레이션 (0) | 2021.10.08 |
---|---|
[백준-파이썬] 2206: 벽 부수고 이동하기 (0) | 2021.10.08 |
[백준-파이썬] 1753: 최단 경로 (0) | 2021.10.07 |
[백준-파이썬] 22867: 종점 (0) | 2021.10.07 |
[백준-파이썬] 18511: 큰 수 구성하기 (0) | 2021.10.07 |