Pages: [1]   Go Down
Print
Author Topic: altezza dell'albero  (Read 961 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Alex_47
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 409


The spiral's King


« on: 22-05-2009, 10:09:19 »

Ragazzi  , non riesco a capire il procedimento logico della ricorsività riguardante l'altezza dell'albero , qualcuno me lo potrebbe spiegare? Qui di sotto c'è la parte del code che non ho capito..

Code:
public int getHeight()
        {
           if (this.isEmpty()) return -1;
           return getHeightAux(root);
         }

         private int getHeightAux(BTNode t)
        {
            if (t == null)  return 0;

            if ( t.left== null && t.right== null) //t è foglia
               return 0;

            if ( getHeightAux(t.left) < getHeightAux(t.right) )
                 return (1+ getHeightAux(t.right));
            else
                 return (1+ getHeightAux(t.left));
        }
« Last Edit: 22-05-2009, 10:21:33 by Alex_47 » Logged
TheSpecialOne
Apprendista Forumista
**
Offline Offline

Posts: 232



« Reply #1 on: 22-05-2009, 12:50:09 »

Ragazzi  , non riesco a capire il procedimento logico della ricorsività riguardante l'altezza dell'albero , qualcuno me lo potrebbe spiegare? Qui di sotto c'è la parte del code che non ho capito..

Code:
public int getHeight()
        {
           if (this.isEmpty()) return -1;
           return getHeightAux(root);
         }

         private int getHeightAux(BTNode t)
        {
            if (t == null)  return 0;

            if ( t.left== null && t.right== null) //t è foglia
               return 0;

            if ( getHeightAux(t.left) < getHeightAux(t.right) )
                 return (1+ getHeightAux(t.right));
            else
                 return (1+ getHeightAux(t.left));
        }

praticamente il primo metodo (quello con il public) è la chiamata vera e propria del metodo, che prende l'albero intero. Il metodo invocato, a sua volta, chiama un metodo (private) che svolge l'operazione richiesta sui nodi.

Per la chiamata ricorsiva invece, ad ogni chiamata viene restituito un 1+...
Al ritorno di ogni chiamata gli 1 verranno sommati, quindi otterremo una somma, che sta ad indicare l'altezza del nostro albero!
Logged
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« Reply #2 on: 23-05-2009, 09:29:59 »

Salve ragazzi,
 nel codice sopra postato, nella condizione del terzo if del metodo private, nn ho capito cosa viene confrontato tra i due metodi invocati...qualcuno può spiegarmelo?
Logged
Pages: [1]   Go Up
Print
Jump to: