概述
判断一个数据序列是否构成一个小根堆
实现代码:
#include <stdio.h>//判断一个数据序列是否构成一个小根堆
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("%dn",IsMinHeap(a,7));
return 0;
}
输出结果:
1
请按任意键继续. . .
最后
以上就是天真招牌为你收集整理的判断一个数据序列是否构成一个小根堆判断一个数据序列是否构成一个小根堆的全部内容,希望文章能够帮你解决判断一个数据序列是否构成一个小根堆判断一个数据序列是否构成一个小根堆所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复