1147 Heaps(判断完全二叉树是大顶堆?小顶堆?非堆?)

 1 #include<iostream>
 2 using namespace std;
 3 int m,n,cbt[1010],num;
 4 void postOrder(int root) {
 5     if(root > n) return;
 6     postOrder(root*2);
 7     postOrder(root*2+1);
 8     if(num > 0) printf(" ");
 9     printf("%d",cbt[root]);
10     num++;
11 }
12 int main() {
13     cin>>m>>n;
14     for(int i = 0; i < m; ++i) {
15         for(int j = 1; j <= n; ++j)
16             cin>>cbt[j];
17         int isMax = 1,isMin = 1;
18         for(int j = 2; j <= n; ++j) {
19             if(cbt[j] > cbt[j/2]) isMax = 0;
20             if(cbt[j] < cbt[j/2]) isMin = 0;
21         }
22         if(isMax) printf("Max Heap\n");
23         else if(isMin) printf("Min Heap\n");
24         else printf("Not Heap\n");
25         num = 0;
26         postOrder(1);
27         printf("\n");
28     }
29     return 0;
30 }

 总结:

1144:考察了借助散列。

1145:考察了散列中的正向平方探查法(pos = (data+k*k) mod Tablesize)的内容,计算查找成功和失败的查找次数之和,注意 查找插入位置时,k~【0,Tablesize-1】,计算查找次数时,k~【0,Tablesize】

1146:考察了拓扑排序,核心就是找 入度为 0的顶点。

1147:考察堆排序,判断完全二叉树是大顶堆,小顶堆还是非堆。

posted @ 2020-03-14 16:53  tangq123  阅读(408)  评论(0编辑  收藏  举报