文章
11
粉丝
414
获赞
9
访问
108.3k
//堆的判断,顺序存储完全二叉树,一个数组即可
#include<iostream>
using namespace std;
bool judegeSmallHeap(int a[], int n);
int main()
{
int bt[100];
int n;
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> bt[i];
cout << (((judegeSmallHeap(bt,n)) == 1) ? "Yes":"No");
return 0;
}
bool judegeSmallHeap(int a[], int n)
{
int nonLeafNode = n / 2; //第一非叶节点下标
while(nonLeafNode >= 1)
{
int maxNode = 2 * nonLeafNode;//记录非叶节点左右孩子节点中最大孩子值的下标
if(maxNode < n && a[maxNode] < a[maxNode + 1])
maxNode++;//右孩子节点值最大
if(a[nonLeafNode] > a[maxNode])
return false;
nonLeafNode--;
}
return true;
}
登录后发布评论
暂无评论,来抢沙发