Advertisement
disiodj

HOMEWORK5

Jan 13th, 2016
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.55 KB | None | 0 0
  1.  
  2. #include <stdio.h>  /* ora puoi usare NULL */
  3. #include <stdlib.h>  /* ora puoi usare le funzioni di allocazione dinamica della memoria */
  4.  
  5.  
  6. struct nodo_albero{
  7.     int info;
  8.     struct nodo_albero *sx;
  9.     struct nodo_albero *dx;
  10. };
  11.  
  12. /* scrivi qui la definizione del tipo albero che rappresenta un puntatore alla struttura nodo_albero */
  13.  
  14. typedef struct nodo_albero *albero;
  15.  
  16.  
  17. /* scrivi qui eventuali funzioni di appoggio */
  18. int TrovaT(albero T, int v){
  19.     if(T==NULL)
  20.         return 0;
  21.     else
  22.         if(T->info == v && T->sx==NULL && T->dx==NULL)
  23.             return 1;
  24.         else{
  25.             int ds = TrovaT(T->dx, v);
  26.             int sn = TrovaT(T->sx, v);
  27.             if(ds>0)
  28.                 return 1+ds;
  29.             if(sn>0)
  30.                 return 1+sn;
  31.             return ds||sn;
  32.         }
  33. }
  34.  
  35. void RiempiArray(albero T, int v, int* punt, int k){
  36.     if(!(T))
  37.         return ;
  38.     if(T->info > v){
  39.         punt[k] = T->info;
  40.         RiempiArray(T->sx, v, punt, k+1);
  41.     }
  42.     else{
  43.         punt[k] = T->info;
  44.         RiempiArray(T->dx, v, punt,k+1);
  45.     }
  46. }
  47. /* INIZIO FUNZIONE */
  48.  
  49. int* albero_cammino(albero T, int v){
  50.     int LungCammino = TrovaT(T, v), i=0;
  51.     int* A = (int*)calloc(LungCammino, sizeof(int));
  52.     for(i=0; i<LungCammino; i++)
  53.         A[i] = 0;
  54.     int *punt;
  55.     punt = A;
  56.     if(LungCammino>0){
  57.         RiempiArray(T, v, punt, 0);
  58.         for(i=0; i<LungCammino; i++)
  59.             printf("%d ",punt[i]);
  60.         return punt;
  61.     }
  62.     else{
  63.         punt = NULL;
  64.         return punt;
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement