解题思路:因为深度i是深度i-1的2倍,所以定义一个s来表示每层深度的结点数
注意事项:需要了解二叉树的基本概念
参考代码:
#include<bits/stdc++.h>
using namespace std;
long long n,a[1000000],x[1000000],s=1,z=1,zd,q,w=1;
int main(){
cin>>n; //结点数
for(int i=1;i<=n;i++)
cin>>a[i]; //输出每个节点的大小
for(int j=1;j<=n;j++){
for(int i=1;i<=s;i++){ //s是第就层的结点数
x[w]+=a[z]; //w表示层数,换成j也行
z++; //记录结点数
if(z>n){ //如果大于总结点数开始判断
if(x[w]>zd)zd=x[w],q=w; //如果第w层的权值大于最大的权值,q=w
cout<<q; //输出深度
return 0;
}
}
if(x[w]>zd)zd=x[w],q=w; //如果第w层的权值大于最大的权值,q=w
s=s*2; //s=下一深度的结点数
w++; //深度+1
}
return 0;
}
0.0分
1 人评分
【蟠桃记】 (C语言代码)浏览:651 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:520 |
printf基础练习2 (C语言代码)浏览:741 |
C语言程序设计教程(第三版)课后习题5.7 (Java代码)浏览:889 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:543 |
【蟠桃记】 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:591 |
Cylinder (C语言描述+详细分析)浏览:3265 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1189 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:540 |