判断一组序列数据是否是堆
判断一组序列数据是否是堆:
把序列看成数组型的二叉树,如果根节点是i,左子树是2*i,右子树是2*i+1
最大堆:所有父节点都比左子树、右子树大
最小堆:所有父节点都比左子树、右子树小
如果这组序列式符合最大堆或最小堆,则是堆,否则不是
EG:
判断一下序列是否为堆
A(10,50,80,30,60,20,15,18)
B(10,18,15,20,50,80,30,60)
C(10,15,18,50,80,30,60,20)
D(10,30,60,20,15,18,50,80)
将ABCD看成二叉树为: