PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树
文章目录
- 题目分析
- 题目链接
题目分析
来源: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输出路径、完全二叉树建树相关推荐
- 1155 Heap Paths (30 分)【难度: 一般 / 知识点: 堆 堆的遍历】
https://pintia.cn/problem-sets/994805342720868352/problems/1071785408849047552 #include<bits/stdc ...
- PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!
文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...
- PAT甲级1072 Gas Station (30 分):[C++题解]dijkstra算法、最短路
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 所有的dist[ ]都≤Ds:最小的dist[ ]最大; dist[ ] 总和最大. 由于加油站是字符,为了简单起见,将m个加油站编 ...
- PAT甲级1107 Social Clusters (30 分):[C++题解]并查集,爱好、人数
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 凭爱好,分人群.注意点:爱好可传递.什么意思?意思是A和B的有共同爱好1, B和C有共同爱好2,那么认为A和C也是同一群人. 按照爱 ...
- PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法
文章目录 题目分析 题目链接 题目分析 分析 把N(样例中N=169)看成背包的体积:把k(样例中k=5)看成背包能承的重量.把这道题转化为二维完全背包问题.由于数据范围给出的次幂P∈[2,7],那么 ...
- PAT甲级1049 Counting Ones (30 分):[C++题解]统计1的个数、数位统计
文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析: 以数字abcdefg这个7位数字为例,说一下本题的思路. 1)数字1在每一位出现的次数. 2)以第d位为例,第d位的取值可以分为3种情 ...
- PAT甲级1139 First Contact (30 分):[C++题解] 图论、暴力枚举两个点、hash映射
文章目录 题目分析 题目链接 题目分析 来源:acwing 题目分析: 图论模拟题. 给定暗恋的两个人A 和B,需要寻找一对C 和D ,满足:A和C是朋友,C和D是朋友,D和B是朋友.而且A.C同性别 ...
- PAT甲级1111 Online Map (30分):[C++题解]两次dijkstra求单源最短路、保存路径、长度最短、时间最短
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:dijkstra求单源最短路的题目. 只是写两遍而已,第一遍求按照路径长度求,第二遍按照时间最少求. 另外加一个vector路径的判断 ...
- PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径
文章目录 题目分析 题目链接 题目分析 来源:PAT网站 分析 dijkstra模板默写过来,然后多了一个保存路径,使用数组pre[N]记录最短路上每个点的前驱,通过pre数组保存到vector中 v ...
最新文章
- JUnit 3.8 通过反射测试私有方法
- 深入理解分布式技术 - 分布式缓存总结回顾
- android:process=.server,Android启动(三)----开启SystemServer进程
- 【计算机网络复习】1.1.3 速率相关的性能指标
- Android动态图标包制作教程,安卓手机ico图标制作美化图文教程
- 14岁的男孩说想学生信,应该给予哪些指导?
- 《深入理解 Spring Cloud 与微服务构建》第十三章 配置中心 Spring Cloud Config
- 一个关于finally和return的面试题
- linux系统桌面放大镜,Ubuntu下怎样使用放大镜辅助功能
- C语言排序的几种算法
- 面部捕捉技术_新功能要来!苹果收购面部捕捉技术公司Faceshift
- 循环结构:while和do...while循环语句
- java基于SSM的疫情物业系统源码
- linux下 解压iso 命令行
- 2020HW漏洞总结(三)
- HTML图片的路径问题
- SOC、SOPC、MPSOC、RFSOC、SDSOC的概念及区别
- 微信公众号包含敏感信息
- 【ES6】阮一峰ES6学习之Class(一)
- 城市矢量路网获取以及根据此数据制作点数据
热门文章
- Sqoop找不到主类 Error: Could not find or load main class org.apache.sqoop.Sqoop
- ConcurrentHashMap 内部实现分析
- 一系列图论问题[转]
- 在O(N)时间内求解 正数数组中 两个数相加的 最大值
- 第四章之Hadoop I/O
- python如何安装torch_PyTorch安装与基本使用详解
- flutter加载本地html标签,Flutter中如何加载并预览本地的html文件的方法
- 【控制】复杂度定义及计算
- 【控制】《自动控制原理》胡寿松老师-第5章-线性系统的频域分析法
- 【PC工具】chrome插件: Github 项目代码树形格式展示工具octotree