disiodj

HOMEWORK4_Ese3

Jan 2nd, 2016
326
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4.  
  5. struct nodo_albero{
  6.     int info;
  7.     struct nodo_albero *sx;
  8.     struct nodo_albero *dx;
  9. };
  10.  
  11. /* scrivi qui la definizione del tipo albero che rappresenta un puntatore alla struttura nodo_albero */
  12.  
  13. typedef struct nodo_albero *albero;
  14. int max(int n, int m){
  15.     if(n>m)
  16.         return n;
  17.     else
  18.         return m;
  19. }
  20.  
  21. int Height(albero n){
  22.     if(n)
  23.         return 1+max(Height(n->sx), Height(n->dx));
  24.     else
  25.         return -1;
  26. }
  27. /*Scrivi funzione che ritorna il valore massimo di un array*/
  28. int ValoreMax(int *puntArray, int n){
  29.     int i=0, max = 0;
  30.     for(i=0; i<n; i++){
  31.         if(max<puntArray[i])
  32.             max = puntArray[i];
  33.     }
  34.     return max;
  35. }
  36. /*Questa funzione per ogni nodo ad altezza k, incrementa il valore, riempieno quindi un array con il numero di nodi alla stessa altezz. Insomma modifica solo il contenuto di un array puntatoa*/
  37. int Larghezza_AlberoRic(int *punt, albero T, int k){
  38.     if(T==NULL)
  39.         return 0;
  40.     else{
  41.         int *punt2 = punt;
  42.         (*(punt+k))++;
  43.         printf("k vale: %d punt vale %d e punt[k] vale %d\n", k, *punt, punt[k]);
  44.         k++;
  45.         Larghezza_AlberoRic(punt, T->sx,k);
  46.         Larghezza_AlberoRic(punt2, T->dx,k);
  47.         return 0;
  48.     }
  49. }
  50.  
  51. int larghezza_albero(albero T){
  52.     if(!T){
  53.         return 0;
  54.     }
  55.     int contenitore[Height(T)+1];
  56.     contenitore[0] = 0; //ti devi sempre ricordare di inziializzare il puntatore.
  57.     int *punt;
  58.     punt = contenitore;
  59.     Larghezza_AlberoRic(punt, T, 0);
  60.     printf("punt vale: %d\n", *punt);
  61.     return ValoreMax(punt, Height(T));
  62. }
RAW Paste Data