#includeusing namespace std;
struct tree{double average;int sum,t,pre;}a[1500];
int find(int n,int r)
{
double mmax=-1;
int k=0;
for(int i=1;i<=n;++i)
{
if(i==r)
continue;
if(a[i].average>mmax)
{
mmax=a[i].average;
k=i;
}
}
return k;
}
int main()
{
int n,r;
while(cin>>n>>r)
{
if(n==0&&r==0) break;
memset(a,0,sizeof(a));
int ans=0;
for(int i=1;i<=n;++i)
{
scanf("%d",&a[i].sum);
a[i].average=1.0*a[i].sum;
ans+=a[i].sum;
a[i].t=1;
}
for(int i=1;i
结构体储存,储存节点的父亲节点,储存节点的权值,储存节点的平均权值
操作:
1.遍历结点,寻找某一个结点的所有子结点,。。。顺序枚举1~n的结点,O(n)
int x;///寻诈的结点的父亲结点是x
for(int i=1;i<=n;++i)
{
if(p[i].pre==x)
{
...
///operations
...
}
}
2.寻找结点的父亲结点,O(1),按下标操作
int x;///一个子结点
int ans=p[x].pre;///ans就是x的父亲结点
树的三种储存结构方式:
1.父亲节点储存
2.孩子链
3.第一孩子+兄弟链
神犇链接+题目链接:
网友评论