#include<stdio.h>
typedef struct {
    int data[100];
    int parent ,lchild,rchild;
}qqq;
typedef struct {
    qqq data[100];
    int parent ,lchild,rchild;
}ppp;
int main(){
    ppp p;
    int temp; 
    int i,j=0,num=0; 
    int aa[100];     
    //相加构成一个父结点 ,其相加的两位为左右孩子结点 
    //第一步执行  
    j++; 
    aa[0]=3;
    aa[1]=4;
    aa[2]=5;
    aa[3]=6;
    aa[4]=7;
    temp=aa[0]+aa[1];//  temp=7;
    p.data[0].parent =temp; 
    p.data[0].lchild=aa[0];
    p.data[0].rchild=aa[1];
    printf("%d ",p.data[0].parent);    //不在路劲长度内  7 
    printf(" %d",p.data[0].lchild); 
    printf(" %d",p.data[0].rchild); 
    //第二步执行  
    j++; 
    aa[0]=5;
    aa[1]=6;
    aa[2]=7;
    aa[3]=7;
    temp=aa[0]+aa[1];//  temp=11;
    p.data[1].parent =temp; 
    p.data[1].lchild=aa[0];
    p.data[1].rchild=aa[1];
    printf("\n%d ",p.data[1].parent);  //不在路劲长度内   14 
    printf(" %d",p.data[1].lchild);    //不在路劲长度内   7 
    printf(" %d",p.data[1].rchild); 
    //第三步执行  
    j++; 
    aa[0]=7;
    aa[1]=7;
    aa[2]=11; 
    temp=aa[0]+aa[1];//  temp=14;
    p.data[2].parent =temp; 
    p.data[2].lchild=aa[0];
    p.data[2].rchild=aa[1];
    printf("\n%d ",p.data[2].parent);   //不在路劲长度内  11 
    printf(" %d",p.data[2].lchild); 
    printf(" %d",p.data[2].rchild); 
    //第四步执行  
    j++; 
    aa[0]=11;
    aa[1]=14;
    temp=aa[0]+aa[1];//  temp=25;
    p.data[3].parent =temp; 
    p.data[3].lchild=aa[0];
    p.data[3].rchild=aa[1];
    printf("\n%d",p.data[3].parent);    //不在路劲长度内   25 
    printf(" %d",p.data[3].lchild);     //不在路劲长度内   14 
    printf(" %d",p.data[3].rchild);     //不在路劲长度内   11 
     for(i=j-1;i>0;i--){//j-i代表权 ,并且除去重复计算的结点 
         num=num+p.data[i].lchild*(j-i); 
         num=num+p.data[i].rchild*(j-i);
    } 
    printf("\n%d",num); 
   


 
} 
 

 

posted on 2019-06-13 18:00  ZOne=w=  阅读(157)  评论(0编辑  收藏  举报