#include <iostream>
#include <vector>
using namespace std;
struct node{
int data;
int id;
node* left;
node* right;
};
const int maxv=1010;
int list[maxv];
vector<node*> path;
int n;
node* build(node* root,int index){
if(root==NULL){
root=new node;
root->data=list[index];
root->id=index;
root->left=root->right=NULL;
}
if(index*2<=n){
root->left=build(root->left,index*2);
}
if(index*2+1<=n){
root->right=build(root->right,index*2+1);
}
return root;
}
void dfs(node* root){
if(root->left==NULL&&root->right==NULL){
for(int i=0;i<path.size();i++){
printf("%d",path[i]->data);
if(i!=path.size()-1){
printf(" ");
}else{
printf("\n");
}
}
return;
}else{
if(root->right!=NULL){
path.push_back(root->right);
dfs(root->right);
path.pop_back();
}
if(root->left!=NULL){
path.push_back(root->left);
dfs(root->left);
path.pop_back();
}
}
}
int main(){
cin>>n;
node* root=NULL;
for(int i=1;i<=n;i++){
cin>>list[i];
}
root=build(root,1);
path.push_back(root);
dfs(root);
bool ismax=true,ismin=true;
for(int i=2;i<=n;i++){
if(list[i]>list[i/2]){
ismax=false;
}
if(list[i]<list[i/2]){
ismin=false;
}
}
if(ismax==false&&ismin==false){
printf("Not Heap\n");
}else if(ismax==false){
printf("Min Heap\n");
}else{
printf("Max Heap\n");
}
return 0;
}
pat a 1155
最新推荐文章于 2020-11-24 10:29:50 发布
224

被折叠的 条评论
为什么被折叠?



