码迷,mamicode.com
首页 > 其他好文 > 详细

判断一个序列是不是堆

时间:2020-03-25 23:15:19      阅读:620      评论:0      收藏:0      [点我收藏+]

标签:知识   左右   个数   一个   关于   左右子树   i+1   大于   先来   

解决这个问题前先来看一个题目,如下:
以下序列不是堆的是()
A.(100,85,98,77,80,60,82,40,20,10,66)
B.(100,98,85,82,80,77,66,60,40,20,10)
C.(10,20,40,60,66,77,80,82,85,98,100)
D.(100,85,40,77,80,60,66,98,82,10,20)
要解决这个问题就要知道关于判断堆的知识:
堆分为最大堆和最小堆,如果把一个数列画为一颗二叉树的话,那么根结点是i,左子树是2i,右子树是2i+1。对于最大堆而言,所有的根节点都大于其左右子树,而在最小堆中,所有的根节点都小于其左右子树。
所以这道题目中的A,B选项可以构成最大堆,C选项可以构成最小堆,而只有D选项无法满足构成堆的条件

判断一个序列是不是堆

标签:知识   左右   个数   一个   关于   左右子树   i+1   大于   先来   

原文地址:https://blog.51cto.com/14289397/2481822

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!