이진트리 구성하기 < 정렬된 트리가 있다 라고 가정하고, 탐색하는 방법
L = int(input()) # 트리의 레벨
레벨 별로 얼마만큼의 노드가 생성될 지 계싼이 가능하다.
L = int(input()) # 트리의 레벨
# number of nodes per level = 2**(L-1)
# => 1,2,4,8 ...
N = 6
data = [3,6,2,1,7,9]
tree = [0 for _ in range(N+1)]
last = 1
for i in range(len(data)):
if not tree[i]:
tree[last] = data[i]
else:
last += 1
child = last # 새로 추가된 정점을 자식으로
parent = child // 2 # 완전 이진 트리에서 부모 정점 번호
tree[child] = data[i]
# print(Tree, child, parent)
# 부모가 있고, 부모가 자식보다 큰 동안(부모가 작아질 때 까지)
while parant >= 1 and tree[parent] > tree[child]:
#부모와 자식의 위치를 변경
tree[parent], tree[child] = tree[child], tree[parent]
# 자식 위치를 부모로 변경
child = parent
# 부모는 부모 // 2 => 조상노드
parent = parent // 2
print(tree) # [0,1,2,3,6,7,9]