반응형
9934번: 완전 이진 트리
상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래
www.acmicpc.net
코드
import sys
k = int(input())
num = list(map(int,sys.stdin.readline().split()))
length = len(num)
tree = [[] for _ in range(k)]
def get_num(first,last,k):
if first == last:
tree[k].append(num[first])
return
mid = (first+last) // 2
tree[k].append(num[mid])
get_num(first,mid-1,k+1)
get_num(mid+1,last,k+1)
get_num(0,length-1,0)
for i in range(k):
for j in tree[i]:
print(j,end=' ')
print()
설명
중위 순회(inorder)를 반대로 실행해야 된다.
출력값을 보면 입력받은 리스트의 가장 가운데 값이 트리의 루트가 된다. 재귀를 사용해서 first와 last를 계속 바꿔주면서 가운데 값을 찾아냈다.
리스트에 있는 값을 한 줄에 출력하고 싶으면 print(*list)를 쓰면 된다는 사실을 알게 됐다.
list = [1,2,3,4]
print(*list) # 1 2 3 4 와 같이 출력됨
반응형
'알고리즘 > 트리' 카테고리의 다른 글
[백준][Python] 14675번 단절점과 단절선 (0) | 2022.03.03 |
---|---|
[백준][Python] 5639번 이진 검색 트리 (0) | 2022.03.01 |
[백준][Python 파이썬] 1068번 트리 (0) | 2022.02.28 |
[백준][Python] 1991번 트리 순회 (0) | 2022.02.25 |
[백준][Python] 11725번 트리의 부모 찾기 (0) | 2022.02.25 |
댓글