文章

11

粉丝

414

获赞

9

访问

102.2k

头像
堆的判断
P1127
发布于2020年7月26日 12:25
阅读数 8.8k

//堆的判断,顺序存储完全二叉树,一个数组即可 
#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;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发