Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    1

    Albero binario contenente array nei nodi

    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

  2. #2
    codice:
    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 NODE* tree;
    
    tree Costruisci_Albero(double *tag, tree S, tree D) {
       
       tree root = (struct node*) malloc(sizeof(NODE));
    
       assert(root != NULL);
    
       root->cluster = tag;
       root->left = S;
       root->right = D;
    
       return root;
    
    };
    codice:
    int main(void){
    
       tree root = NULL;
       double *array = NULL;
       int n;
    
       //... input n ...
    
       array = malloc(n * 3 * sizeof(double));
    
       assert(array != NULL);
    
       root = Costruisci_Albero(array, NULL, NULL);
    
       return 0;
    
    }

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303

    Moderazione

    Il linguaggio va sempre obbligatoriamente indicato nel titolo... tu non l'hai specificato nemmeno all'interno della discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.