判断一组序列数据是否是堆

判断一组序列数据是否是堆:

把序列看成数组型的二叉树,如果根节点是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看成二叉树为:

posted @ 2018-03-30 14:17  第五  阅读(4244)  评论(0编辑  收藏  举报