您的位置:首页 > 编程语言 > C语言/C++

C++判断一个序列是否为堆(最大堆、最小堆)

2017-07-01 19:52 561 查看
1、如何判断一个序列是不是堆?

把这个序列看成是数组型的二叉树,如果根节点是i,左子数是2*i,右子数是2*i+1。

2、堆分为最大堆和最小堆。

(1)最大堆

以{100,60,70,50,32,65}为例分析:

最大堆中所有父节点都比左子树大,比右子数小,画成堆形式如下: 



(2)最小堆
比如{32,50,60,70,100,65}为例分析:
最小堆中所有父节点都比左子树小,比右子数大,画成堆形式如下: 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐