Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------------------------------------------
- CERCA(t,n){
- CERCARIC(t.root, n) //questo serve perchè l'utente vuole lanciare su una lista, io invece voglio un tipo t.root, e quindi lo lancio su t.root
- }
- CERCARIC(t, n) //in pre-ordine{
- if(t==null)
- return FALSE;
- if(t.info==n)
- return TRUE;
- else{
- k=CERCA(t.left, n);
- c = CERCA(t.right,n);
- return k || c;
- }
- }
- CERCARIC(t.root, n) //in post ordine.
- if(t==NULL)
- return false;
- if(CERCARIC(t.left,n))
- return TRUE;
- if(CERCARIC(t.right), n)
- return false;
- return t.info == n;
- CERCARIC(t.root,n) //in Simmetrico
- if(t==NULL)
- return false;
- l=CERCARIC(t.left, n);
- if(t.info==n)
- return true;
- k = CERCARIC(t.right, n);
- return l||k;
- -----------------------------------------------------------------------
- CONTA-NODI(t)
- if(t==null)
- return 0;
- return CONTARIC(t.root, n)
- CONTARIC(t) //Questo è in Pre-Ordine
- if(t==null)
- return -1;
- return 1+(CONTARIC(t.left)+CONTARIC(t.right));
- //Ora faccio in post-ordine, è più complesso
- CONTARIC(n)
- //devo tornare il numero dei nodi del sottoalbero destro e sinistro, +1 che sono io.
- l=r=0;
- if(n.left=!null)
- l = CONTARIC(n.left);
- if(n.right!=null)
- r=CONTARIC(n.right);
- return r+l+1;
- ---------------------------------------------------------------
- CAMMINO(t)
- CAMMINORIC(t.root)
- CAMMINORIC(t)
- if(t==NULL)
- return TRUE
- if((t.left && t.right)!=NULL)
- return false
- else
- return CAMMINORIC(t.left) || CAMMINORIC(t.right)
- -----------------------------------------------------------------
- HEIGHT(t)
- HERIC(t.root)
- HERIC(t) //Questa è in post Ordine
- if(t==NULL)
- return 0;
- else
- l= HERIC(t.left);
- r =HERIC(t.right);
- return MAX(l,r)+1; //Max è una funzione che ritorna il massimo tra due numeri.
- //Se lo volessimo fare in preordine, dovrei protarmi l'altezza dall'alto, quindi la radice la lancio e dico che ha alatezza zero, ogni genitori informa il figliod ella sua altezza e poi a questo punto quando tornano su i valori un o verifica che il figlio sinistro e il figlio destro che valori tornano al massimo.
- Se sono su un nodo generico e mi hanno dato l'altezza, lancio sul figlio sinistro e destro, quelli che ritornano la massima altezza che hanno visto, io adesso devo ritornare la massima altezza che ho visto che è la massima del figlio destro e sinistro del mio valore.
- --------------------------------------------------------------
- AVERAGE(t)
- c = CONTA-NODI(t.root)
- return AVERAGERIC(t.root)/c
- AVERAGERIC(t)
- if(t==null)
- return 0;
- else{
- l = AVERAGERIC(t.left)
- r = AVERAGERIC(t.right);
- return l+r+t.info;
- ----------------------------------------------------------------------
- //CHIEDI se corretto
- COMPLETO(t)//funzione che verifica se un albero è completo.
- h = HEIGHT(t);
- return COMPLETORIC(t.root, h)
- COMPLETORIC(n,h)
- if(n==NULL)
- return i==-1;
- else
- return COMPLETORIC(n.left, i-1) && COMPLETORIC(n.right, i-1);
- --------------------------------------------------------------------------
- DEALLOCA(t)
- if(t.root==null)
- return;
- DEALLOCARIC(t.root)
- t.root=null;
- DEALLOCARIC(t)
- if(t.left!=null)
- DEALLOCARIC(n.left);
- if(t.right!=null)
- DEALLOCARIC(t.right);
- FREE(t);
- return;
- -----------------------------------------------------------------
- //CHIEDI la correttezza
- POTA(t,x) //elimina un sottoalbero a partire da un nodo x
- return POTARIC(t.root, x)
- POTARIC(t, x)
- if(t==null)
- return FALSE;
- if(t==x)
- FREE(t);
- return TRUE;
- else
- return (POTA(t.left,x))||(POTA(t.right,x));
- ---------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement