9934번: 완전 이진 트리

상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래

www.acmicpc.net


BFS를 통해 해결하자!

 

  1. 배열의 중간값이 루트이고 루트를 기준으로 왼쪽 서브루트와 오른쪽 서브루트로 나눌 수 있다.
  2. makeTree함수를 통해 서브트리와 현재 깊이를 전달한다.

 

import sys
input = sys.stdin.readline

K = int(input())
_input = list(map(int, input().split()))
tree = [[] for _ in range(K)]


def makeTree(arr, x):
    mid = (len(arr)//2)
    tree[x].append(arr[mid])
    if len(arr) == 1:
        return
    makeTree(arr[:mid], x+1)
    makeTree(arr[mid+1:], x+1)


makeTree(_input, 0)
for i in range(K):
    print(*tree[i])

'개발 > 알고리즘' 카테고리의 다른 글

[백준 2638] 치즈 (python)  (0) 2021.06.02
[백준 16719] ZOAC (python)  (0) 2021.05.31
[백준 9470] Strahler 순서 (python)  (0) 2021.05.31
[백준 15918] 랭퍼든 수열쟁이야!! (python)  (0) 2021.05.30
[백준 8980] 택배 (python)  (0) 2021.05.29
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기