[SWEA] 5176. [Python S/Wトラブルシューティング基本]8日間-バイナリナビゲーション[D 2]


📚 質問する


https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ-_6qfsDFAWg
完全にバイナリツリーです.中尉は巡視して,順番に値切る.
従って、中位サイクルは、cntを増加させ、vが1の場合、cnt値およびvがn/2の場合、cnt値を記憶して出力する.

📒 コード#コード#

def in_order(v):    # 완전 이진 트리 탐색(중위 순회)
    global cnt, result
    if v <= n:      # n까지 확인
        in_order(v * 2)
        cnt += 1    # 확인할 때마다 cnt + 1
        if v == 1:  # 조상 노드 값 담기
            result[0] = cnt
        elif v == n // 2:   # 조상 노드 // 2 값 담기
            result[1] = cnt
        in_order(v * 2 + 1)


t = int(input())
for tc in range(1, t + 1):
    n = int(input())
    cnt = 0     # 노드에 저장된 값
    result = [0, 0]     # 루트 노드에 저장된 값, n // 2 노드에 저장된 값
    in_order(1)
    print(f'#{tc}', *result)

🔍 結果:Pass