Salve ragazzi,
Ho un problema con la funzione inserimento di un albero binario:
Ho due classi:
-nodo con chiave puntatore sx e puntatore dx
-Una tree
Nella funzione inserisci:
Se uso get quando richiamo inserisci mi da errore "Non-const lvalue reference to type Nodo* cannot bind to a temporary of type Nodo*"
codice:
Nodo* get_sx(){return sx;}
codice:
void tree::insert (Nodo* &nodo, int key)
{
while (nodo!=nullptr)
{
if(key<nodo->get_chiave())
{
return inserisci(nodo->get_sx(),key); //<--Non-const lvalue reference to type Nodo* cannot bind to a temporary of type Nodo*
}
if(key>nodo->get_chiave())
{
return inserisci(nodo->get_dx(),key); //<--Non-const lvalue reference to type Nodo* cannot bind to a temporary of type Nodo*
}
}
if(nodo==nullptr)
{
Nodo* nuovo_n= new Nodo(key);
nodo=nuovo_n;
}
}
Se invece rendo pubblico il nodo sinistro e destro e richiamo la funzione senza utilizzare get come segue
codice:
return inserisci(nodo->sx,nuovo);
non ho errori.
Qualcuno sa come posso, risolvere?
Ho provato anche a farlo iterativo ma non scrive i dati, ho provato con un puntatore d'appoggio e nemmeno ho avuto buoni risultati.
Grazie in anticipo.