解析:这道30分的题10分钟以内可以完成,送命题。
最多1000的点故用int level[1010]记录从0~1000层节点数,初始为0。用Max记录当前最大层数。只需要一个插入函数, 在构建搜索树的同时把最大层数记录,并维护level数组即可。树建好了答案也就有了。
#include<cstdio>
struct node
{
node* lchild, *rchild;
int data, lv;
};
int level[1010] = {0}, Max = -1;
node* inser(node* root, int k, int x){
if(root == NULL){
root = new node;
root->lchild = NULL;
root->rchild = NULL;
root->data = x;
level[k]++;
if(k > Max) Max = k;
}
else if(x <= root->data)
root->lchild = inser(root->lchild, k+1, x);
else
root->rchild = inser(root->rchild, k+1, x);
return root;
}
int main(){
int n, x;
scanf("%d", &n);
node* root = NULL;
for(int i = 0 ; i < n; i++){
scanf("%d", &x);
root = inser(root, 0, x);
}
printf("%d + %d = %d\n",level[Max], level[Max-1], level[Max] + level[Max-1] );
return 0;
}
本文介绍了一种使用C++实现的搜索树构建方法,通过递归插入节点并记录每层节点数量,最终统计最深两层的节点总数。适用于处理最多1000个节点的数据集。
511

被折叠的 条评论
为什么被折叠?



