View Single Post
Old 06-06-2009, 15:26   #1
Rsk
Senior Member
 
L'Avatar di Rsk
 
Iscritto dal: Dec 2006
Messaggi: 314
[C] Problema albero binario

Ho implementato una funzione che crea un albero binario e la ricerca postorder.. solo che quando cerco di eseguire la ricerca il programma si chiude..
sapete aiutarmi?

Codice PHP:
#include <stdio.h>
#include <stdlib.h>

typedef char elemento;
typedef struct nodo *tree_pointer;
typedef struct nodo {
                     
elemento key;
                     
tree_pointer figlio_sinistro;
                     
tree_pointer figlio_destro;
                     } 
nodo;


void postorder(tree_pointer ptr);
void crea(tree_pointer *radice);



tree_pointer radice;


int main(int argcchar *argv[])
{
   
   
radice =(tree_pointer)malloc(sizeof(nodo));
  
   
crea(radice);
   
postorder(radice);
   
fflush(stdin);
   
getchar();
}

void crea(tree_pointer *radice)
{
  
tree_pointer ptr_sinptr_des;
  
elemento item;
  
char risp;
  
  
printf("Inserisci il dato : ");
  
scanf("%c",&item);    
  (*
radice)->key=item;
  
printf("\n%c Ha figlio sinistro? (s/n)", (*radice)->key);
  
fflush(stdin);
  
risp=getchar();
  
fflush(stdin);
  if(
risp=='n') (*radice)->figlio_sinistro=NULL;
  else{
       
ptr_sin=(tree_pointer)malloc(sizeof(nodo));
       (*
radice)->figlio_sinistro=ptr_sin;
       
crea(&ptr_sin);
       } 
  
printf("\n%c Ha figlio destro?", (*radice)->key);
  
fflush(stdin);
  
risp=getchar();
  
fflush(stdin);
  if(
risp=='n') (*radice)->figlio_destro=NULL;
  else{
       
ptr_des = (tree_pointer)malloc(sizeof(nodo));
       (*
radice)->figlio_destro=ptr_des;
       
crea(&ptr_des);
       }         
}

void postorder(tree_pointer ptr)
{
  if(
ptr)
  {
    
postorder(ptr->figlio_sinistro);
    
postorder(ptr->figlio_destro);
    
printf("%4c",ptr->key);     
   }

__________________
Athlon64 x2 5600 - AsRock ALiveNF5eSata2+ - kingston 2GB ddr2 800 - GeForce 8800gts 320MB
Rsk è offline   Rispondi citando il messaggio o parte di esso