Ricerca chiave in albero binario

di il
2 risposte

Ricerca chiave in albero binario

Salve a tutti, è il mio primo messaggio in questo forum!
Il mio problema è questo: devo creare una funzione in C che, presi in input un albero e un intero, mi restituisca il puntatore al nodo la cui chiave è proprio l'intero che cercavo. Ho scritto una funzione, ma purtroppo non mi restituisce quello che volevo... Non capisco dove ho sbagliato, mi potete dare una mano?
tree find_leaf(tree T, int x)
{
     tree L, R;
     if(T == NULL) return;
     if(T -> left == NULL && T -> right == NULL)
     {
          if(T -> info == x) return T;
     }
     else
     {
         L = find_leaf(T -> left, x);
         R = find_leaf(T -> right, x);
     }
}

2 Risposte

  • Re: Ricerca chiave in albero binario

    A) l'intero può essere in un qualsiasi nodo, quindi ho portato fuori il test su info
    b) il test che sia il lato destro che il lato sinistro puntino a NULL non ha senso e l'ho eliminato
    c) se un ramo mi da un risultato Ok devo riportarlo
    d) se l'albero in input è NULL devo comunque restituire un valore, NULL per segnalare che comunque l'intero non è stato trovato
    tree find_leaf(tree T, int x)
    {
      tree L, R;
      if(T == NULL) return NULL;  // d)
    
      if(T -> info == x)   // a)
          return T;          //
    
        L = find_leaf(T -> left, x);
        if(L!=NULL)         // c)
           return L;          //
        R = find_leaf(T -> right, x);
        if(R!=NULL)         //
           return R;          //
     
      return NULL;   ///
    }
  • Re: Ricerca chiave in albero binario

    Ti ringrazio tantissimo, ora funziona correttamente!
Devi accedere o registrarti per scrivere nel forum
2 risposte