반응형
코드
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 |
댓글