def preorder(nodes, idx, result):
if len(nodes)>idx:
result.append(nodes[idx])
preorder(nodes, (idx * 2) + 1, result)
preorder(nodes, (idx * 2) + 2, result)
return result
def inorder(nodes, idx, result):
if len(nodes)>idx:
inorder(nodes, (idx * 2) + 1, result)
result.append(nodes[idx])
inorder(nodes, (idx * 2) + 2, result)
return result
def postorder(nodes, idx, result):
if len(nodes)>idx:
postorder(nodes, (idx * 2) + 1, result)
postorder(nodes, (idx * 2) + 2, result)
result.append(nodes[idx])
return result
def solution(nodes):
# 전위, 중위, 후위 순회 결과 계산
# 노드 리스트와 루트 노드의 인덱스를 매개변수로 각각 호출
preorderNodes = []
inorderNodes = []
postorderNodes = []
preorderNodes = preorder(nodes, 0, preorderNodes) # 전위
inorderNodes = inorder(nodes, 0, inorderNodes)
postorderNodes = postorder(nodes, 0, postorderNodes)
preorderNodesresult = " ".join(map(str,preorderNodes))
inorderNodesresult = " ".join(map(str,inorderNodes))
postorderNodesresult = " ".join(map(str,postorderNodes))
total = []
total.append(preorderNodesresult)
total.append(inorderNodesresult)
total.append(postorderNodesresult)
return total
'코딩테스트 > 문제 풀이 - Python' 카테고리의 다른 글
[프로그래머스 lv3]다단계 칫솔 판매 (0) | 2024.03.20 |
---|---|
이진 탐색 트리 구현 (0) | 2024.03.20 |
[프로그래머스 lv2]예상 대진표 (0) | 2024.03.19 |
[프로그래머스 lv2]메뉴 리뉴얼 (1) | 2024.03.18 |
[프로그래머스 lv1]신고 결과 받기 (0) | 2024.03.15 |