C/Visual C - Realiza buckle alternado solamente

   
Vista:

Realiza buckle alternado solamente

Publicado por Cristian (1 intervención) el 05/11/2007 20:05:54
Bueno la idea del programa es que guarde todas las letras en el arbol, pero si existe devuelve el nodo del arbol, el problema es que solo ingresa de forma alternada, no logro saber cual es el error, ojala me puedan ayudar... aca les dejo una imagen

http://img111.imageshack.us/img111/7268/dibujoss8.jpg

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct nodo{
int index;
char *word;
struct nodo *sig;
}Nodo;

typedef struct arbol{
char letra;
struct nodo *sig;
struct arbol *izq,*der;
}Arbol;

Arbol *newnodo(char letra){
Arbol *nodo;
nodo=(Arbol*)malloc(sizeof(Arbol));
nodo->letra=letra;
nodo->sig=NULL;
nodo->izq=NULL;
nodo->der=NULL;
return(nodo);
}

Arbol *bc(Arbol **a,char letra){
Arbol *nuevo,*actual,*anterior;
actual=*a;
anterior=NULL;
int lnodo,l;
l=(int)letra;
while(actual && actual->letra!=letra){
lnodo=(int)actual->letra;
anterior=actual;
actual=(lnodo>l)?actual->izq:actual->der;
}
if(actual)
return(actual);
if(!anterior){
nuevo=newnodo(letra);
*a=nuevo;
return(nuevo);
}
else{
nuevo=newnodo(letra);
if(lnodo<l)
anterior->der=nuevo;
else
anterior->izq=nuevo;

return(nuevo);
}
}

void inorden(Arbol *a){
if(a){
inorden(a->izq);
printf("%c -> ",a->letra);
inorden(a->der);
}
}

main(){
Arbol *a,*na;
char letra;
int i;
a=NULL;
for(i=0;i<6;i++){
printf("Ingrese letra: ");
scanf("%c",&letra);
na=bc(&a,letra);
inorden(a);
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder