判断一个数据序列是否构成一个小根堆
判断一个数据序列是否构成一个小根堆 实现代码:
#include //判断一个数据序列是否构成一个小根堆
bool IsMinHeap(int A[],int len){//将二叉树结点序列看成一个循序表
int i;
if(len%2==0){//结点个数为偶数个时的判断
if(A[len/2]>A[len])
return false;
for(i=len/2-1;
i>=1;
i--){
if(A[i]>A[2*i]||A[i]>A[2*i+1])
return false;
}
}else if(len%2==1){//结点个数为奇数个时的判断
for(i=len/2-1;
i>=1;
i--){
if(A[i]>A[2*i]||A[i]>A[2*i+1])
return false;
}
}else{
return true;
}
}
int main(int argc, char *argv[])
{
int a[8]={0,3,6,7,8,9,10,11};
//为了方便从数组下标为1的结点开始比较
printf("%d\n",IsMinHeap(a,7));
return 0;
}
输出结果:
1
请按任意键继续. . .
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- Docker应用:容器间通信与Mariadb数据库主从复制
- 一个人的碎碎念
- 七年之痒之后
- 我从来不做坏事
- 异地恋中,逐渐适应一个人到底意味着什么()
- 迷失的世界(二十七)
- live|live to inspire 一个普通上班族的流水账0723
- 遗憾是生活的常态,但孝顺这件事,我希望每一个人都不留遗憾