Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ABB - Arbol Binario de Busqueda (Funcion Insertar Iterativo)

Estas en el tema de ABB - Arbol Binario de Busqueda (Funcion Insertar Iterativo) en el foro de C/C++ en Foros del Web. Hola, estaba estudiando la materia de ABB e intente llevar la funcion Insertar a una funcion que hiciera lo mismo de forma iterativa en ves ...
  #1 (permalink)  
Antiguo 22/06/2013, 20:43
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 5 meses
Puntos: 3
Pregunta ABB - Arbol Binario de Busqueda (Funcion Insertar Iterativo)

Hola, estaba estudiando la materia de ABB e intente llevar la funcion Insertar a una funcion que hiciera lo mismo de forma iterativa en ves de recursiva, asi que escribi el siguiente codigo, pero no me funciona y no veo donde esta el error, segun yo debiese funcionar.

Código C++:
Ver original
  1. void insertar(nodo *&arbol, int valor) {   
  2.     if (!arbol) {
  3.         cout << "raiz nula";
  4.         arbol = new nodo;
  5.         arbol->dato = valor;
  6.         arbol->izq = arbol->der = NULL;
  7.     }
  8.     else {
  9.         nodo *aux = arbol;
  10.        
  11.         while (aux)
  12.             if (valor < aux->dato)
  13.                 aux = aux->izq;
  14.             else if (valor > aux->dato)
  15.                 aux = aux->der;
  16.        
  17.         aux = new nodo;
  18.         aux->dato = valor;
  19.         aux->izq = aux->der = NULL;
  20.     }
  21. }

PD: La funcion recursiva es:
Código C++:
Ver original
  1. void insertar(nodo *&arbol, int valor) {
  2.     if (!arbol) {
  3.         arbol = new nodo;
  4.         arbol->dato = valor;
  5.         arbol->izq = arbol->der = NULL;
  6.     }
  7.     else if (valor < arbol->dato)
  8.         insertar(arbol->izq, valor);
  9.     else if (valor > arbol->dato)
  10.         insertar(arbol->der, valor);
  11. }
  #2 (permalink)  
Antiguo 23/06/2013, 01:46
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: ABB - Arbol Binario de Busqueda (Funcion Insertar Iterativo)

Y qué error te da exactamente?
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #3 (permalink)  
Antiguo 23/06/2013, 09:18
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 5 meses
Puntos: 3
Respuesta: ABB - Arbol Binario de Busqueda (Funcion Insertar Iterativo)

Que cuando imprimo el preOrden, inOrden y postOrden como que solo muestra el primer nodo que se ingreso.
  #4 (permalink)  
Antiguo 23/06/2013, 17:16
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: ABB - Arbol Binario de Busqueda (Funcion Insertar Iterativo)

En la funcion iterativa vos modificas al puntero aux que es local. Nunca modificas la estructura en si. Fiajte que en la funcion recursiva pasas una referencia del puntero. Eso te deja poder modificar el puntero..

Posible solucion:

Código C++:
Ver original
  1. nodo *& aux = arbol;

Etiquetas: binario, busqueda, funcion, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:41.