解题思路:因为深度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语言代码)浏览:660 |
简单的a+b (C语言代码)浏览:493 |
奖学金 (C++代码)浏览:2008 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:612 |
【出圈】 (C语言代码)浏览:558 |
C语言程序设计教程(第三版)课后习题6.7 (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1420 |
简单的a+b (C语言代码)浏览:599 |
WU-链表数据求和操作 (C++代码)浏览:1316 |