判别以下序列是否为堆(大顶堆或小顶堆) 如果不是 则把它调整为堆。

大学 序列 已帮助 人

判别以下序列是否为堆(大顶堆或小顶堆),如果不是,则把它调整为堆。

热搜:sd序列是5端互补序列

答案解析

难度★★☆ 搜索
  • )将序列(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,所以不是堆。