Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/11/2011, 14:46
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Pasar puntero en función recursiva

Veo que el problema era como dijo CalgaryCorpus. En esa funcion cuando haces a = nuevo; y despues haces un return. Al salir de la funcion, no se afecto realmente a lo que vos necesitabas. Ya que vos modificaste una variable local, que es un puntero. Vos podes modificar el nodo pero no a lo que apunta. Pasa lo mismo con un entero normal. Si pasas un entero por valor, al modificarlo y retornar el entero vuelve a su valor inicial. Aca pasa lo mismo, pasas un puntero, modificas su valor y cuando volves vuelve a su valor. Posible modificacion:

Código C:
Ver original
  1. void arbol::insertar(nodo **a, string b)
  2. {
  3. if(*a == NULL)
  4. {
  5. nodo *nuevo;
  6. nuevo = new nodo(b,0,NULL,NULL);
  7. *a = nuevo;
  8. numElements++;
  9. return;
  10. }
  11. else
  12. {
  13. if(b < (*a)->clave)
  14. {
  15. insertar( & ((*a)->izq),b);
  16.  
  17. // AQUI SE RECALCULARÍAN LAS ALTURAS
  18. }
  19. else if(b > (*a)->clave)
  20. {
  21. insertar( & ((*a)->der),b);
  22.  
  23. // AQUI SE RECALCULARÍAN LAS ALTURAS
  24. return;
  25. }
  26. }