chenxi16

导航

数据结构1 - 05-树7 堆中的路径

 

 

 

 

 

 

 1 #include<stdio.h>
 2 #define MAXN 1002
 3 int H[MAXN],N,M,r[MAXN];
 4 void inserth(int data);
 5 void read();
 6 void printr();
 7 int main(){
 8     read();
 9     printr();
10     return 0;
11 }
12 
13 void inserth(int data){
14     H[0]++;
15     H[H[0]] = data;
16     if(H[0]==1) return;
17     //根结点 
18     else{ //非根结点
19        int i;
20        for(i=H[0];i>1;i=i/2){
21            if(data < H[i/2]) H[i] = H[i/2];
22            else break;
23        }
24        H[i] = data;
25     }
26 }
27 void read(){
28     H[0] = 0;
29     scanf("%d %d",&N,&M);
30     int i,data;
31     for(i=1;i<=N;i++){
32         scanf("%d",&data);
33         inserth(data);
34     }
35     return;
36 }
37 void printr(){
38     int i,data,j;
39     for(i=0;i<M;i++){
40         scanf("%d",&r[i]);
41     }
42     for(i=0;i<M;i++){
43         if(r[i] <= H[0]){
44             data = r[i];
45             for(j=data;j>=1;j=j/2){
46                 printf("%d",H[j]);
47                 if(j!=1) printf(" ");
48             }
49             printf("\n");
50         }
51     }
52 }

总结:在完成的过程中,向小根堆中插入值后,进行调整出现了问题。

posted on 2020-04-04 11:38  chenxi16  阅读(144)  评论(0编辑  收藏  举报