Salve a tutti.
Sto cercando di scrivere 2 righe di codice in c++ usando eclipse.
Vorrei creare una funzione ricorsiva che dato il puntatore a un nodo(radice) e l'altezza di un albero mi crei un albero binario vuoto di altezza inserita.
Questa è la struttura dati che ho utilizzato per fare l'albero:
struct nodo {
// Albero di numeri interi
int DATO;
// Puntatore al sottoalbero destro
struct nodo *DX;
// Puntatore al sottoalbero sinistro
struct nodo *SX;
}NODO;
typedef struct nodo* tree;
Io avevo abbozzato una funzione con chiamata ricorsiva ma ho notato che alla fine, facendola girare non ottengo l'effetto desiderato. Per semplicità facevo scrivere il livello ad ogni nodo in modo tale da vedere se veniva creato.
La funzione da me usata era questa:
void CreaAlbero(tree t,int w){
t->SX=new nodo;
t->DX=new nodo;
t->DATO=w;
if (w==1) return ;
else if(w!=1){
CreaAlbero(t->SX,w-1);
CreaAlbero(t->DX,w-1);
}
}
dove passavo il puntatore ad un nodo e l'altezza max che l'albero doveva avere.
Sapreste aiutarmi? Magari anche cambiando completamente la mia funzione?
Salve
Sto cercando di scrivere 2 righe di codice in c++ usando eclipse.
Vorrei creare una funzione ricorsiva che dato il puntatore a un nodo(radice) e l'altezza di un albero mi crei un albero binario vuoto di altezza inserita.
Questa è la struttura dati che ho utilizzato per fare l'albero:
struct nodo {
// Albero di numeri interi
int DATO;
// Puntatore al sottoalbero destro
struct nodo *DX;
// Puntatore al sottoalbero sinistro
struct nodo *SX;
}NODO;
typedef struct nodo* tree;
Io avevo abbozzato una funzione con chiamata ricorsiva ma ho notato che alla fine, facendola girare non ottengo l'effetto desiderato. Per semplicità facevo scrivere il livello ad ogni nodo in modo tale da vedere se veniva creato.
La funzione da me usata era questa:
void CreaAlbero(tree t,int w){
t->SX=new nodo;
t->DX=new nodo;
t->DATO=w;
if (w==1) return ;
else if(w!=1){
CreaAlbero(t->SX,w-1);
CreaAlbero(t->DX,w-1);
}
}
dove passavo il puntatore ad un nodo e l'altezza max che l'albero doveva avere.
Sapreste aiutarmi? Magari anche cambiando completamente la mia funzione?
Salve