Código
Pero cuando ejecuto me aparece los siguiente
diego@diego-desktop:~/Documentos/fuente$ gcc arbol.c -o arbol arbol.c: En la función ‘main’: arbol.c: En la función ‘insertar’: arbol.c: En la función ‘arbol_to_array’: diego@diego-desktop:~/Documentos/fuente$
Código
Agradeceria cualquier sugerencia , el código es el siguiente
======= Backtrace: ========= /lib/tls/i686/cmov/libc.so.6[0xb7640604] ./arbol[0x804872f] ./arbol[0x8048519] /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe5)[0xb75e7775] ./arbol[0x80483a1] ======= Memory map: ======== 08048000-08049000 r-xp 00000000 08:05 10223911 /home/diego/Documentos/fuente/arbol 08049000-0804a000 r--p 00000000 08:05 10223911 /home/diego/Documentos/fuente/arbol 0804a000-0804b000 rw-p 00001000 08:05 10223911 /home/diego/Documentos/fuente/arbol 08ffa000-0901b000 rw-p 08ffa000 00:00 0 [heap] b75d0000-b75d1000 rw-p b75d0000 00:00 0 b75d1000-b772d000 r-xp 00000000 08:05 376906 /lib/tls/i686/cmov/libc-2.9.so b772d000-b772e000 ---p 0015c000 08:05 376906 /lib/tls/i686/cmov/libc-2.9.so b772e000-b7730000 r--p 0015c000 08:05 376906 /lib/tls/i686/cmov/libc-2.9.so b7730000-b7731000 rw-p 0015e000 08:05 376906 /lib/tls/i686/cmov/libc-2.9.so b7731000-b7734000 rw-p b7731000 00:00 0 b7734000-b7741000 r-xp 00000000 08:05 327701 /lib/libgcc_s.so.1 b7741000-b7742000 r--p 0000c000 08:05 327701 /lib/libgcc_s.so.1 b7742000-b7743000 rw-p 0000d000 08:05 327701 /lib/libgcc_s.so.1 b7743000-b7746000 rw-p b7743000 00:00 0 b7746000-b7747000 r-xp b7746000 00:00 0 [vdso] b7747000-b7763000 r-xp 00000000 08:05 328221 /lib/ld-2.9.so b7763000-b7764000 r--p 0001b000 08:05 328221 /lib/ld-2.9.so b7764000-b7765000 rw-p 0001c000 08:05 328221 /lib/ld-2.9.so bfded000-bfe02000 rw-p bffeb000 00:00 0 [stack] Cancelado
Código
#include <stdio.h> typedef struct { int info; void *izq , *der; }Nodo; //definimos el tipo puntero a nodo typedef Nodo * PtrNodo; void insertar(PtrNodo *ptrNodo, int info); int esVacio(PtrNodo nodo); int buscar(PtrNodo nodo, int elem); int nodos(PtrNodo nodo); int arbol_to_array(PtrNodo nodo, int **array, int numEle); int main(){ PtrNodo raiz = NULL; int array[] ={8,1,4,2,6,7}; int info = 4; int *elem; int i = 0; insertar(&raiz , array[0]); insertar(&raiz , array[1]); insertar(&raiz , array[2]); insertar(&raiz , array[3]); insertar(&raiz , array[4]); insertar(&raiz , array[5]); if(arbol_to_array(raiz, &elem , 0)){ while(i < 5){ i++; } } return 0; } void insertar(PtrNodo *ptrNodo, int info){ if(esVacio(*ptrNodo)){ (*ptrNodo)->info = info; (*ptrNodo)->izq = (*ptrNodo)->der = NULL; } else if ((*ptrNodo)->info < info) insertar((void*)(&(*ptrNodo)->der), info); else if ((*ptrNodo)->info > info) insertar((void*)(&(*ptrNodo)->izq), info); } int esVacio(PtrNodo nodo){ if(nodo == NULL)return 1; return 0; } int buscar(PtrNodo nodo, int elem){ if (nodo == NULL) return 0; else if (nodo->info < elem) return buscar(nodo->der, elem); else if (nodo->info > elem) return buscar(nodo->izq, elem); else return 1; } int nodos(PtrNodo nodo){ if(!nodo)return 0; else return(1 + nodos(nodo->izq) + nodos(nodo->der)); } int arbol_to_array(PtrNodo nodo, int **array, int numElem){ if(!nodo){ return 0; }else{ *array[numElem] = nodo->info; if(nodo->izq){ numElem++; arbol_to_array(nodo->izq , array , numElem); } if(nodo->der){ numElem++; arbol_to_array(nodo->der , array , numElem); } return 1; } }