Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Alberi binari in C

  1. #1

    Alberi binari in C

    Salve a tutti.
    Devo creare un albero binario che venga costruito a partire dai sottoalberi fino a giungere al nodo principale....qualcuno può aiutarmi?

  2. #2
    prova a buttare giù qualcosina, inizia a definire la struttura dei dati di un nodo dell'albero binario.
    Dai anche una occhiata in rete che c'è un mucchio di materiale sull'argomento.
    ciao
    sergio

  3. #3
    la struttura è semplice...

    struct nodo{
    int distanza;
    struct nodo *psx;
    struct nodo *pdx;
    }

  4. #4
    ti ho commentato una semplice bozza
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    struct nodo {
    
    	int distanza;
    	struct nodo *psx;
    	struct nodo *pdx;
    
    };
    
    struct nodo * aggiungiNodo ( struct nodo * genitore, int la_distanza ) {
    
    	int dist;	// di appoggio
    	struct nodo * n;	// di appoggio
    
    	struct nodo * nuovo_nodo = ( struct nodo * ) malloc ( sizeof ( struct nodo ) );
    
    	nuovo_nodo->psx = NULL;
    	nuovo_nodo->pdx = NULL;
    	nuovo_nodo->distanza = la_distanza ;
    	
    	if ( !genitore ) {
    		// creo il nodo radice
    		return nuovo_nodo ;
    	}
    	else {
    
    		n = genitore ;
    		
    		/*
    		 visita l'albero a partire da genitore
    		 finchè non trova una posizione libera
    		*/
    		while ( n ) {
    
    			genitore = n ;
    			dist = genitore->distanza;
    			if ( la_distanza < dist ) // prendi il ramo sinistro
    				n = genitore->psx ;
    			else if ( la_distanza < dist )	// prendi il ramo destro
    				n = genitore->pdx ;
    			else 	// sono uguali, come la vuoi gestire ??
    				;
    
    		}
    
    		if ( la_distanza < dist ) 
    			return genitore->psx = nuovo_nodo ;
    		else if ( la_distanza < dist )
    			return genitore->pdx = nuovo_nodo ;
    		else 	// sono uguali, come la vuoi gestire ??
    			;
    
    		
    	}
    
    }
    
    int main ()
    {
    
    	// creo il nodo radice
    	struct nodo * radice = aggiungiNodo ( NULL, 7 );
    	printf ( "%d\n", radice->distanza );
    
    	// aggiungo un nodo
    	struct nodo * figlio = aggiungiNodo ( radice, 4 ) ;
    	
    	printf ( "%d\n", radice->psx->distanza );
    	
    	return (0);
    
    }

  5. #5
    ok. grazie. Ci lavoro un po' sopra.

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.