import os
import sys
import math
# 请在此输入您的代码
n = int(input())
l = input().split(' ')
tree = []
c = int(math.log((n + 1), 2))
for i in range(c):
tree.append([])
for j in range(2**i):
tree[i].append(l[0])
l.pop(0)
if len(l) != 0:
tree.append(l)
# print(tree)
max = int(tree[0][0]) # 根结点的权值
max_level = 0 # 记录最大权值之和的层数
for i in range(1, len(tree)): # 从第1层开始,根不用算了
sum = 0 # 每一层的权值之和
for j in tree[i]:
sum += int(j)
if sum > max: # 如果这一层的权值之和大于之前最大的
max = sum # 最大的就被替换了
max_level = i # 层数也被记录
# 必须是最大的才会被替换,等于的不变,就是相同的情况下只记录最小深度的
print(max_level + 1)
完全二叉树的权值
最新推荐文章于 2022-08-03 09:45:27 发布