PAT1147题 Heaps
include <bits/stdc++.h>
using namespace std;
vector<int> tree;
int n,m;
void post(int index)
{
// 后序遍历输出
if (index>n ) return;
post(index*2);
post(index*2+1);
printf("%d%s",tree[index],index!=1?" ":"\n");//中间有空格最后一个是换行
//最后一个是根节点,也就是tree【1】
}
int main ()
{
scanf("%d %d",&m,&n);
tree.resize(n+1);//重置容器的大小为n+
for ( int i =1;i<=m;i++ ){
int ismin=1,ismax=1;
for (int j=1;j<=n;j++ ){
scanf("%d",&tree[j]);
}
//如果出现不符合大顶堆或者小顶堆的,判定为不成立
for (int j=2;j<=n;j++ ){
if (tree[j/2]>tree[j]) ismin=0; //有父亲比子大,不是小堆
if (tree[j/2]<tree[j]) ismax=0;//有父亲比子小,不是大堆
}
printf("%s\n",(ismin==1||ismax==1)?(ismin==1?"Min Heap":"Max Heap"):"Not Heap");
//分别输出大顶堆小顶堆不是堆
post(1);
}
return 0;