PAT甲级 堆
PAT甲级中的堆问题
爱吃梦龙雪糕
这个作者很懒,什么都没留下…
展开
-
1155 Heap Paths (30 分)
堆问题,判断一个堆是最大堆还是最小堆,并右到左输出从根结点到叶子结点的所有路径。 坑点如下 1,用DFS来求路径。用push和pop来维护路径。 2,以此遍历所有结点,从而判断一个堆是最大堆还是最小堆。 整体代码如下 #include<cstdio> #include<algorithm> #include<cmath> #include<iostream> #include<vector> using namespace std; vector&原创 2021-09-01 19:28:40 · 61 阅读 · 0 评论 -
1098 Insertion or Heap Sort (25 分)
本题考察插入排序和堆排序的实现方法 坑点如下 1,插入排序的实现,可直接用sort函数实现 2,插入函数实现时,要求为过程中的序列等于结果,所以第一次sort长度最小为2,同理堆排序也从第一次开始 3,堆排序的实现,首先i为要交换的结点,j为其左子树,之后进入循环,如果j存在,则j取其左右子树中最大的数,如果大于i结点数值则交换i和j的值。之后重新取i=j,j=2*i;如果左右子树都小于i结点值,则退出循环,一次调整结束。(轮到i调整时i之后的结点都已调整完毕) void downAdjust(int lo原创 2021-08-10 12:47:30 · 134 阅读 · 0 评论