【问题描述】
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。对于深度为的,有个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前个结点,这样的树就是完全二叉树。
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,
其左子树中所有结点的键值小于该结点的键值;
其右子树中所有结点的键值大于等于该结点的键值;
其左右子树都是二叉搜索树。
堆是一棵树,其每个节点都有一个键值,且每个节点的键值都大于等于/小于等于其父亲的键值。(即对于大根堆,每个节点的键值都小于等于其父亲的键值;对于小根堆,每个节点的键值都大于等于其父亲的键值。)
现在给定一棵非空的完全二叉树,判断它是堆还是二叉搜索树,还是既不是堆也不是二叉搜索树。
【输入形式】
第一行一个正整数,代表数组元素个数。
第二行个整数,第个数代表完全二叉树的第号结点的键值。
【输出形式】
若这棵树是二叉堆,输出:Is HEAP!
若这棵树是二叉搜索树,输出:Is BST!
若这棵树既不是二叉堆也不是二叉搜索树,输出:Whatever
【数据范围】
, 。
对于, 。
【样例输入1】
3
3 1 4
【样例输出1】
Is BST!
【样例输入2】
3
4 1 3
【样例输出2】
Is HEAP!
【样例输入3】
3
1 3 4
【样例输出3】
Is HEAP!
【样例输入4】
3
2 3 1
【样例输出4】
Whatever
难度等级: | 0 |
总通过次数: | 28 |
总提交次数: | 84 |