解题思路:因为深度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语言代码)浏览:911 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1914 |
Tom数 (C++代码)浏览:868 |
P1002 (C语言代码)浏览:1019 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:485 |
printf基础练习2 (有点不明白)浏览:887 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:822 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:863 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:646 |
幸运数 (C++代码)浏览:1309 |