文章目录

  • 题目分析
  • 题目链接

题目分析



来源:acwing

分析:

  • 堆首先是完全二叉树,所以先建完全二叉树,由于给定的是层序遍历的数据,所以直接用数组即可,注意数组下标从1开始,这样便满足结点u和左儿子、右儿子的关系:下标分别是是u*2和u*2+1
  • 然后就是树的dfs遍历,需要输出每条路径,并且需要判断单调关系,另外是先输出右儿子的路径,再输出左儿子的路径。对应到dfs的实现,就是先dfs(u*2+1),再dfs(2 *u);

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N  =1010;int n;
int h[N];
bool gt, lt;
vector<int> path; //dfs求路径
//相当于前序遍历
void dfs(int u){//u结点先加入路径path.push_back(h[u]);//叶子结点if(u*2 > n) {cout<< path[0];for(int i = 1; i<path.size(); i++) {cout<<" "<<path[i];if(path[i]>path[i-1]) gt = true;else if (path[i] < path[i-1]) lt = true;}cout<<endl;}//先输出右儿子if(u*2+1 <=n ) dfs(u*2 +1);//再输出左儿子if(u*2 <= n) dfs(u*2);//恢复现场,把插入的u结点删除path.pop_back();
}int main(){cin >> n;//从编号1开始,1是根结点for(int i =1; i<=n; i++) cin >> h[i];//从根节点开始dfsdfs(1);if(gt && lt) cout<<"Not Heap"<<endl;else if(gt) cout<<"Min Heap"<<endl;else cout<<"Max Heap"<<endl;}

题目链接

PAT甲级1155 Heap Paths (30 分)
https://www.acwing.com/problem/content/1651/

PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树相关推荐

  1. 1155 Heap Paths (30 分)【难度: 一般 / 知识点: 堆 堆的遍历】

    https://pintia.cn/problem-sets/994805342720868352/problems/1071785408849047552 #include<bits/stdc ...

  2. PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!

    文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...

  3. PAT甲级1072 Gas Station (30 分):[C++题解]dijkstra算法、最短路

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 所有的dist[ ]都≤Ds:最小的dist[ ]最大; dist[ ] 总和最大. 由于加油站是字符,为了简单起见,将m个加油站编 ...

  4. PAT甲级1107 Social Clusters (30 分):[C++题解]并查集,爱好、人数

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 凭爱好,分人群.注意点:爱好可传递.什么意思?意思是A和B的有共同爱好1, B和C有共同爱好2,那么认为A和C也是同一群人. 按照爱 ...

  5. PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法

    文章目录 题目分析 题目链接 题目分析 分析 把N(样例中N=169)看成背包的体积:把k(样例中k=5)看成背包能承的重量.把这道题转化为二维完全背包问题.由于数据范围给出的次幂P∈[2,7],那么 ...

  6. PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计

    文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析: 以数字abcdefg这个7位数字为例,说一下本题的思路. 1)数字1在每一位出现的次数. 2)以第d位为例,第d位的取值可以分为3种情 ...

  7. PAT甲级1139 First Contact (30 分):[C++题解] 图论、暴力枚举两个点、hash映射

    文章目录 题目分析 题目链接 题目分析 来源:acwing 题目分析: 图论模拟题. 给定暗恋的两个人A 和B,需要寻找一对C 和D ,满足:A和C是朋友,C和D是朋友,D和B是朋友.而且A.C同性别 ...

  8. PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...

  9. PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径

    文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析 dijkstra模板默写过来,然后多了一个保存路径,使用数组pre[N]记录最短路上每个点的前驱,通过pre数组保存到vector中 v ...

最新文章

  1. JUnit 3.8 通过反射测试私有方法
  2. 深入理解分布式技术 - 分布式缓存总结回顾
  3. android:process=.server,Android启动(三)----开启SystemServer进程
  4. 【计算机网络复习】1.1.3 速率相关的性能指标
  5. Android动态图标包制作教程,安卓手机ico图标制作美化图文教程
  6. 14岁的男孩说想学生信,应该给予哪些指导?
  7. 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config
  8. 一个关于finally和return的面试题
  9. linux系统桌面放大镜,Ubuntu下怎样使用放大镜辅助功能
  10. C语言排序的几种算法
  11. 面部捕捉技术_新功能要来!苹果收购面部捕捉技术公司Faceshift
  12. 循环结构:while和do...while循环语句
  13. java基于SSM的疫情物业系统源码
  14. linux下 解压iso 命令行
  15. 2020HW漏洞总结(三)
  16. HTML图片的路径问题
  17. SOC、SOPC、MPSOC、RFSOC、SDSOC的概念及区别
  18. 微信公众号包含敏感信息
  19. 【ES6】阮一峰ES6学习之Class(一)
  20. 城市矢量路网获取以及根据此数据制作点数据

热门文章

  1. Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop
  2. ConcurrentHashMap 内部实现分析
  3. 一系列图论问题[转]
  4. 在O(N)时间内求解 正数数组中 两个数相加的 最大值
  5. 第四章之Hadoop I/O
  6. python如何安装torch_PyTorch安装与基本使用详解
  7. flutter加载本地html标签,Flutter中如何加载并预览本地的html文件的方法
  8. 【控制】复杂度定义及计算
  9. 【控制】《自动控制原理》胡寿松老师-第5章-线性系统的频域分析法
  10. 【PC工具】chrome插件: Github 项目代码树形格式展示工具octotree