首页 > 其他 > 详细

数据结构1 04-树6 Complete Binary Search Tree

时间:2020-04-03 17:24:15      阅读:56      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

技术分享图片

 

 

 

技术分享图片

 

 

 1 #include<stdio.h>
 2 #define MAXN 1001
 3 int n,a[MAXN],b[MAXN],c[10];
 4 void read();
 5 void sort();
 6 void cbt(int len,int pos,int start);
 7 int main(){
 8     c[0] = 1;
 9     for(int i=1;i<=9;i++) c[i] = c[i-1]*2;
10     read();
11     cbt(n,1,1);
12     for(int i=1;i<=n;i++){
13         printf("%d",b[i]);
14         if(i!=n) printf(" ");
15     }
16     return 0;
17 }
18 void read(){
19     int i;
20     scanf("%d",&n);
21     for(i=1;i<=n;i++) scanf("%d",&a[i]);
22     sort();
23 }
24 void sort(){
25     int i,j,temp,value;
26     for(i=1;i<=n;i++){
27         temp = i;
28         for(j=i+1;j<=n;j++){
29             if(a[temp]>a[j]) temp = j;
30         }
31         value = a[i];
32         a[i] = a[temp];
33         a[temp] = value;
34     }    
35 }
36 void cbt(int len,int pos,int start){
37     if(len==1) {
38         b[pos] = a[start];
39         return;
40     }
41     else if(len==0){    //1忽略的问题 
42         return;
43     }
44     else{
45         int llen,rlen,i,len2;
46         len2 = len-1;
47         llen = 0;
48         rlen = 0; 
49         for(i=1;i<=9;i++){
50             if(len2 > c[i]){
51                 len2 = len2-c[i];
52                 llen += c[i]/2;
53                 rlen += c[i]/2;
54             }
55             else if(len2 == c[i]){
56                 len2 = len2 - c[i];
57                 llen += c[i]/2;
58                 rlen += c[i]/2;
59                 break;
60             }
61             else if(len2 < c[i]){
62                 //此为最后一层
63                 if(len2<=c[i]/2){
64                     llen += len2;
65                     
66                 }else{
67                     llen += c[i]/2;
68                     len2 = len2 - c[i]/2;
69                     rlen += len2;
70                 }
71                 break;
72             }
73         }
74         b[pos] = a[start+llen];   //2粗心的问题 
75         cbt(llen,pos*2,start);
76         cbt(rlen,pos*2+1,start+llen+1);
77 
78     }
79 
80     
81 
82 }

 

数据结构1 04-树6 Complete Binary Search Tree

原文:https://www.cnblogs.com/Learn-Excel/p/12627628.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!