是不是堆 二叉堆可以用一棵完全二叉树来实现,但完全二叉树不一定满足堆的性质。本题就请你判断一棵给定的完全二叉树是不是堆。 时间限制:1000 内存限制:65536 输入 输入在一行中给出两个正整数:m(≤ 100)是将要测试的完全二叉树的数量;n(1 < n ≤ 1000)是完全二叉树中的结点数。 随后 m 行,每行给出 n 个互不相同的键值(均在整型范围内),为完全二叉树的层序遍历序列。 输出 对输入的每棵完全二叉树,如果它是最大堆(大顶堆),就在一行中输出 `Max Heap`;如果是最小堆(小顶堆),则输出 `Min Heap`;如果根本不是堆,则输出 `Not Heap`。然后在下一行输出这棵树的后序遍历序列。同行数字间以 1 个空格分隔,行首尾不得有多余空格。 样例输入 3 8 98 72 86 60 65 12 23 50 8 38 25 58 52 82 70 60 10 28 15 12 34 9 8 56 样例输出 Max Heap 50 60 65 72 12 23 86 98 Min Heap 60 58 52 38 82 70 25 8 Not Heap 56 12 34 28 9 8 15 10
正确答案:参考程序(Python):m,n=map(int,input().split());for _ in range(m):a=list(map(int,input().split()));isMax=isMin=True;for i in range(1,n):p=(i-1)//2;if a[p]<a[i]:isMax=False;if a[p]>a[i]:isMin=False;if isMax:print('Max Heap') elif isMin:print('Min Heap') else:pri
试卷来源:202503 青少年等级考试C/C++真题七级