Salve a tutti.
Sto cercando di implementare un algoritimo che suddivide un insieme di punti in una struttura gerarchica (ad albero binario). Il mio problema è il seguente:
- partendo dalla classica definizione di un albero binario (contenente singoli elementi nei nei nodi) come segue:
struct node {
double cluster; //etichetta contenente il vettore di punti, o meglio matrice(n,3)
struct node *right; //puntatore al sottoalbero destro
struct node *left; //puntatore al sottoalbero sinistro
}NODE;
typedef struct node* tree;
tree Costruisci_Albero(double tag,tree S,tree D)
//costrisce un albero binario non ordinato
{
tree root;
RADICE = (node *) malloc(sizeof(NODE));
RADICE->cluster = tag;
RADICE->left = S;
RADICE->right = D;
return (root);
};
dovrei invece passare al nodo dell'albero, tramite la variabile tag, un vettore[n][3] non noto a priori, ma calcolato quando viene chiamato il main.
Non sono particolarmente esperto di puntatoti e classi ma il problema credo sia principalmente nella funzione malloc che non può allocare qualcosa di cui non è nota la dimensione.
Qualcuno saprebbe suggerirmi come costruire tale albero? e Che modifiche apportare alla classica costruzione.
Grazie anticipatamente