打印堆数据结构
先手动绘制了一个堆结构
00
==================
01 02
========== ==========
03 04 05 06
====== ====== ====== ======
07 08 09 10 11 12 13 14
观察记录一些数据
行开头空格数 | 值间空格数 |
---|---|
14 | |
6 | 14 |
2 | 6 |
0 | 2 |
根据规律
空格数量计算程序(python)
from math import log2, floor
x = 0
kg = [0] # 存放每一行,行开头的空格数量
lineMax = floor(log2(15)) # 计算堆高度
for _ in range(lineMax):
x = (x + 1) * 2
kg.append(x)
# 反转列表
kg.reverse()
print(kg)
输出
[14, 6, 2, 0]
观察记录的数据
根据(值间空格数),值的规律发现
当前(行开头空格数),可以作为下一行的(值间空格数)
下面是完整程序
from typing import List
from math import log2, floor
def parent(i