求大神看下哪里错了

include <cstdio>

include <cstring>

using namespace std;

int N, T;
int Node[1005];

bool isTree() {
if(N == 0)
return true;

bool res = true;
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i * 2] < Node[i] && Node[i] < Node[i * 2 + 1])) {
res = false;
break;
}
if(res)
return true;

res = true;
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i * 2] > Node[i] && Node[i] > Node[i * 2 + 1])) {
res = false;
break;
}
return res;

}

bool isHeap() {
if(0 == N)
return true;

bool res = true;

// 先判断小根堆
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i] <= Node[i * 2] && Node[i] <= Node[i * 2 + 1])) {
res = false;
break;
}
if(res)
return true;

res = true;
// 判断大根堆
for(int i = 1;i <= N / 2;i ++)
if(!(Node[i] >= Node[i * 2] && Node[i] >= Node[i * 2 + 1])) {
res = false;
break;
}
return res;
}

int main() {
scanf("%d", &T);
for(int i = 1;i <= T;i ++) {
memset(Node, 0, sizeof Node);
scanf("%d", &N);
for(int j = 1;j <= N;j ++)
scanf("%d", &Node[j]);

bool fTree = isTree();
bool fHeap = isHeap();
printf("Case #%d: ", i);
if(fTree && fHeap)
printf("Both\n");
else if(fTree)
printf("BST\n");
else if(fHeap)
printf("Heap\n");
else
printf("Neither\n");
}

return 0;
}

0 条评论

目前还没有评论...

信息

ID
1897
难度
7
分类
(无)
标签
(无)
递交数
1233
已通过
215
通过率
17%
被复制
4
上传者