#C1475. J7 实践-2 堆的判定

J7 实践-2 堆的判定

J7 实践-2 堆的判定

题目描述

在计算机科学中,堆是一种的基于树的专用数据结构,它具有堆属性:

如果 PPCC 的父结点,则在大顶堆中 PP 结点的权值大于或等于 CC 结点的权值,在小顶堆中 PP 结点的权值小于或等于 CC 结点的权值。

一种堆的常见实现是二叉堆,它是由完全二叉树来实现的。

你的任务是判断给定的完全二叉树是否是堆。

输入格式

第一行包含两个整数 MMNN,分别表示给定完全二叉树的数量以及每个完全二叉树包含的结点数量。

接下来 MM 行,每行包含 NN 个不同的整数(都在 int 范围内),表示一个完全二叉树的层序遍历序列。

输出格式

对于每个给定的二叉树,首先输出一行对它是否是堆的判断结论。

如果是大顶堆,则输出 Max Heap,如果是小顶堆,则输出 Min Heap,如果不是堆,则输出 Not Heap

然后,再输出一行它的后序遍历序列。

同行数字用空格隔开,行首行尾不得有多余空格。

样例输入

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

样例分析

如上所述。

数据范围

对于 100%100\% 的数据:1M100,1<N10001 \le M \le 100,1 \lt N \le 1000