0
点赞
收藏
分享

微信扫一扫

完全二叉树的权值

试题 G: 完全二叉树的权值
时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分
【问题描述】 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1, A2, ··· AN,如下图所示:
完全二叉树的权值_c++
现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。 注:根的深度是 1。
【输入格式】
第一行包含一个整数 N。 第二行包含 N 个整数 A1, A2, ··· AN 。
【输出格式】
输出一个整数代表答案。
【样例输入】

7
1 6 5 4 3 2 1

【样例输出】

2

【评测用例规模与约定】
对于所有评测用例,1≤ N ≤100000,−100000≤ Ai ≤100000。

void myfun()
{



int array[]={1, 6 ,5 ,4 ,3 ,2 ,1,16};
int arraySize=sizeof(array)/sizeof(int);
int max_num=0;
int flow=0;
int i=0;
int index=0;
int count=0;
int deepth=0;
while(1)
{
int tempsum=0;
int loop=pow(2,flow);

int len=pow(2,flow++)-1;


for(i=0;i<loop;i++)
{
tempsum+=array[len+i];
count++;
if((len+i)==sizeof(array)/sizeof(int)-1)
break;
}
cout<<"tempsum="<<tempsum<<endl;
if(max_num<tempsum)
{
max_num=tempsum;
deepth=flow;
}
if(count==sizeof(array)/sizeof(int))
{
break;
}
}
cout<<"deepth"<<deepth<<endl;





}


举报

相关推荐

0 条评论