BOJ [완전 이진 트리]

jj·2022년 4월 29일
0

알고리즘-문제

목록 보기
17/35

문제

2022-03-29

문제 보기


inorder 방식으로 순회한 결과가 주어질 때 tree를 만드는 문제이다.





풀이


결과의 가운데 부분이 tree의 root이므로 이 과정을 반복하면 된다.


n = int(input())
inorder = list(map(int,input().split()))
levels = [[]for _ in range(n)]

def findRoot(level,list):
  global levels
  if len(list)>1:
    levels[level].append(list[len(list)//2])
    findRoot(level+1,list[0:len(list)//2])
    findRoot(level+1,list[len(list)//2+1:])
  else:
    levels[level].append(list[len(list)//2])

findRoot(0,inorder)

for i in levels:
  for j in i:
    print(j,end = ' ')
  print('')
  
profile
끊임없이 공부하는 개발자

0개의 댓글