Problema inserimento albero N-ario tramite vettore

di il
8 risposte

Problema inserimento albero N-ario tramite vettore

La funzione proposta svolge se inserisco un primo elemento se voglio inserire altri elementi si perdono i puntatori. posto sia la funzione che la struttura.grazie per l' aiuto.
struct nodoalbero{
	   int info;
	   int numfigli;
	   struct nodoalbero **figli;
};
struct nodoalbero *inserimentoAlbero(struct nodoalbero *radice,int padre,int figlio){
	   int i=0;
	   if(radice==NULL){
	   		radice=(struct nodoalbero *)malloc(sizeof(struct nodoalbero));
			radice->info=figlio;
			radice->numfigli=0;
			radice->figli=(struct nodoalbero **)malloc(sizeof(struct nodoalbero *)*radice->numfigli);   			
	   }else
	   if(radice->info==padre){
	   		radice->figli=(struct nodoalbero **)realloc(radice->figli,radice->numfigli+1);
			radice->numfigli+=1;
			radice->figli[radice->numfigli]=newnodo(figlio);
			return radice;
       }else{
	   for(i=0;i<radice->figli[i];i++)
	         radice->figli[i]=inserimentoAlbero(radice->figli[i],padre,figlio);
       }		  						   				
	   return radice;	      						
}

struct nodoalbero *newnodo(int x){
	   struct nodoalbero *e=NULL;
	   e=(struct nodoalbero *)malloc(sizeof(struct nodoalbero));
	   e->info=x;
	   e->numfigli=0;
	   e->figli=(struct nodoalbero **)malloc(sizeof(struct nodoalbero *)*e->numfigli);
	   return e;
}

8 Risposte

Devi accedere o registrarti per scrivere nel forum
8 risposte