[SWEA] 5178. [Python S/Wトラブルシューティング基本]8日間-ノードの和[D 3]
5770 ワード
📚 質問する
https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ-_6qfsDFAWg
空のノードを塗りつぶす場合は,後列順で奥へ増加する.
完全にバイナリツリーです.したがって、配列は1次元として宣言されます.
指定したリーフノードをツリーに配置し、ノード番号に一致させます.
再帰を利用して,葉から巡回し,子ノードの和を親ノードの和と書く.
出力したいノード番号を出力します.
📒 コード#コード#
def recur(v): # 빈 노드들을 채워준다.(후위 순회)
if v <= n:
if tree[v] == 0: # 노드에 값이 없는 경우
tree[v] = recur(v*2) + recur(v*2+1)
return tree[v] # 노드에 값이 있는 경우
else: # 노드의 범위를 넘어간 경우 0
return 0
t = int(input())
for tc in range(1, t + 1):
# n: 노드 수 m: 리프 노드 수 l: 출력할 노드 번호
n, m, node = map(int, input().split())
tree = [0 for _ in range(n + 1)]
for i in range(m): # 리프 노드를 채워준다.
p, c = map(int, input().split())
tree[p] = c
recur(1) # 모든 노드들 다 채우기
print(f'#{tc} {tree[node]}')
🔍 結果:Pass
Reference
この問題について([SWEA] 5178. [Python S/Wトラブルシューティング基本]8日間-ノードの和[D 3]), 我々は、より多くの情報をここで見つけました https://velog.io/@yunhlim/SWEA-5178.-파이썬-SW-문제해결-기본-8일차-노드의-합-D3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol