ヒープの深さと各深さにおける要素数から和を求めるプログラムのエラー
前回の質問
要素数nのヒープの深さと各深さにおける要素数を求める方法について
でいただいたコメントを参考に以下のプログラムを書き、実行しましたがエラーが出ています。
エラー
$ python sample.py
depth_list
[0, 1, 2, 3]
element
[1, 2, 4, 1]
Traceback (most recent call last):
File "sample.py", line 23, in <module>
total += depth[j]*element[j]
TypeError: 'int' object is not subscriptable
どのように修正すれば良いでしょうか。
実行プログラム
import heapq
import math
a = [6, 3, 2, 4, 5, 7, 1, 8]
heapq.heapify(a)
num = int(math.log2(len(a)))
depth_list = []
for i in range(num+1):
depth_list.append(i)
print('depth_list')
print(depth_list)
depth = int(math.log2(len(a)))
element= [2**x for x in range(depth)] + [len(a) - (2**depth - 1)]
print('element')
print(element)
total = 0
for j in range (len(depth_list)):
total += depth[j]*element[j]
# 0*1 + 1*2 + 2*4 + 3*1
print('tolal')
print(total)