Ricerca chiave in albero binario

di Anonimizzato14862 il
2 risposte
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

  • 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;   ///
    }
  • Ti ringrazio tantissimo, ora funziona correttamente!
Devi accedere o registrarti per scrivere nel forum
2 risposte