判别以下序列是否为堆(大顶堆或小顶堆) 如果不是 则把它调整为堆。
序列
已帮助 人
-
)将序列(100,86,48,73,35,39,42,57,66,21)构造表如下:
序号12345678910结点值100864873353942576621左、右儿子86,4873,3539,4257,6621
表中序号与结点之间有这样的关系:当某结点的序号为偶数时,其二分之一值为该结点的父亲结点的序号;当某结点的序号(序号>1)为奇数时,其减一后的二分之一值为该结点的父亲结点的序号。观察表中序号1到5的结点,发现父结点的值均大于其左右儿子的值,故该序列是大顶堆。$将序列(12,70,33,65,24,56,48,92,86,33)构造成二叉树。
观察图(a),因为12<70,而70>24,所以不是堆。将序列(103,97,56,38,66,23,42,12,30,52,6,20)构造表如下:
序号123456789101112结点值103975638662342123052620左、右儿子97,5638,6623,4212,3052,620
观察表中序号1到6的结点,发现父结点的值均大于其左右儿子的值,故该序列是大顶堆。$将序列(5,56,20,23,40,38,29,6l,35,76,28,100)构造成二叉树。
因为5<56,而56>23,所以不是堆。

