Ho implementato la seguente struttura dati di un albero binario di ricerca utilizzando la
classe ma ho diverse perplessità:
struct node {
int info;
node *left, *right;
node(int info):
left(NULL),
right(NULL) {};
};
class treebin {
node* root;
public:
treebin() { root = NULL; };
node* getroot() { return root; };
}
Se desiderassi implementare la funzione di inserimento di un nodo tramite funzione ricorsiva,
definirei il metodo
inserisci nella sezione public, il quale richiama il metodo
insert della sezione private.
class treebin {
node* root;
void insert(int value, node* tree);
public:
treebin() { root = NULL; };
node* getroot() { return root; };
void inserisci(int valore) { void insert(valore, root) };
}
treebin::insert(int value, node* tree) {
...
funzione ricorsiva inserimento del nuovo nodo
...
}
int main() {
treebin abr;
int val=2;
abr.inserisci(val);
}
Mi viene in mente questa alternativa:
class treebin {
node* root;
public:
treebin() { root = NULL; };
node* getroot() { return root; };
void inserisci() { void insert(root) };
}
treebin::inserisci(int value, node* tree) {
...
funzione ricorsiva inserimento del nuovo nodo
...
}
int main() {
treebin abr;
int val=2;
abr.inserisci(val, abr.getroot());
Secondo voi sono entrambi corretti i due approcci e nel caso quale scegliereste? Io il secondo visto che mi sembra più lineare e semplice.
thanks