解决这个问题前先来看一个题目,如下: 以下序列不是堆的是() 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选项无法满足构成堆的条件
判断一个序列是不是堆
原创
©著作权归作者所有:来自51CTO博客作者见风是风的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:通过初始化列表初始的情况
下一篇:网络部分刷题知识总结(一)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
教你如何判断Java代码中异步操作是否完成
本篇文章将介绍几种常见的方法来判断Java代码中异步操作是否完成。
java 异步任务 异步操作 -
Java 堆的设计,如何用堆进行排序
堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。
java 开发语言 堆 堆排序 数据结构 -
关于堆的判断
第一次了解到堆排序 和完全二叉树有关 详情见代码 关于堆的建立 小顶堆 父节点小于子结点 大顶堆 父节点大于子结点
i++ 结点 父节点 #include c++ -
java堆大小如何计算 java实现堆
堆排序:堆分为最大堆和最小堆。 最大堆:它的值大于它所有的子孙代表的值。 插入:将新添加的值,添加到堆的最后位置,然后重新构建堆。 &nbs
java堆大小如何计算 堆排序 java 最小堆 System