当前位置:   article > 正文

PTA 甲级 1147 Heaps

PTA 甲级 1147 Heaps

题目链接

题目:给定完全二叉树的层序遍历,判断是否是最大堆、最小堆or不是堆

思路:利用堆的性质 1.完全二叉树 2.根节点大于or小于子节点,从子节点向上遍历判断

  1. #include<iostream>
  2. #define MAXM 1010
  3. using namespace std;
  4. int a[MAXM];
  5. int ct=0;
  6. void postOrder(int start,int endp){
  7. if(start>endp) return;
  8. postOrder(start*2,endp);
  9. postOrder(start*2+1,endp);
  10. if(ct==0) cout<<a[start];
  11. else cout<<" "<<a[start];
  12. ct++;
  13. }
  14. int main(){
  15. int n,m;
  16. cin>>n>>m;
  17. for(int i=0;i<n;i++){
  18. for(int j=1;j<=m;j++){
  19. cin>>a[j];
  20. }
  21. int maxH=1,minH=1;
  22. for(int j=m;j>1;j--){
  23. if(a[j]>a[j/2]) maxH=0;
  24. if(a[j]<a[j/2]) minH=0;
  25. if(!maxH&&!minH) break;
  26. }
  27. if(maxH)cout<<"Max Heap\n";
  28. if(minH)cout<<"Min Heap\n";
  29. if(!maxH&&!minH) cout<<"Not Heap\n";
  30. ct=0;
  31. postOrder(1,m);
  32. cout<<"\n";
  33. }
  34. return 0;
  35. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/627438
推荐阅读
相关标签
  

闽ICP备14008679号