判断一个数据序列是否构成一个小根堆

判断一个数据序列是否构成一个小根堆 实现代码:

#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 请按任意键继续. . .




    推荐阅读