Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. //PRE=(albero(R) è un albero binario ben formato, Xe Tcontengonoun numero di posizioni pari al numero deinodi di albero(R))
  2.  
  3. void scanliv(nodo*R, int& nliv, int*X, int*T) {
  4.    
  5.     /*n nodoEx n=new nodo();
  6.     coda* C=new coda();
  7.    
  8.    
  9.     */
  10.    
  11.     nliv=0;
  12.     *X=1; //primo nodo radice
  13.     coda scan=new nodoEx(R,0,0); //inizializzo la coda sul primo nodo che e' la radice, liv=0;next=0;
  14.     *T=R->info;
  15.     *T++;
  16.    
  17. //manca il ciclo for per i successivi nodi    
  18.         if (R->right){
  19.             nliv+=1; //livello aumenta di 1
  20.             R=R->right;
  21.             scan=push_end(scan,new nodoEx(R,1,0)); //mi sposto a destra e aggiungo un puntatore della coda al nodo; manca il push_end per aggiungere in fondo alla lista i puntatori ai figli
  22.             *T=R->info;
  23.             *X=2; //X[i] contiene due nodi
  24.             *X++;
  25.         }
  26.        
  27.         else if(R->left){ //altrimenti vado a sinistra
  28.             nliv+=1; //livello aumenta di 1
  29.             R=R->left;
  30.             scan=push_end(scan,new nodoEx(R,1,0));
  31.             *T=R->info;
  32.             *X+=1;}
  33.        
  34.        
  35.  
  36.     }
  37.  
  38. //POST=(nlivè è il numero di livelli di albero(R) e X e T contengono i valori descritti nell’Esempio 1, ovviamente per l’albero(R) in input)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement