Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/05/2010, 14:50
krlosva
 
Fecha de Ingreso: abril-2005
Mensajes: 151
Antigüedad: 19 años, 8 meses
Puntos: 1
De acuerdo Crear Arbol binario de forma recursiva a partir de un vector en preorden

Muy buenas!!
LLevo 4 dias dandome cabezazos y no consigo sacarlo.
Tengo un vector de Tinfo(bool tipo y string texto), los datos los tiene guardados en preorden.
Tengo que crear un arbol binario de forma recursiva con ese vector, y no hay manera de crearlo. La idea la tengo sobre el papel, pero no consigo hacerlo en codigo.
Esta es la funcion que tengo:

template <class T>
void CrearArbol(arbin<T> &a, Tinfo* &v, int n, int x){
if(x >= n)
return;

else
{
arbin<T> ab(v[x]);

if(x == 0)
{
a.Copiar(ab);
CrearArbol(ab,v,n,++x);
}

if(v[x-1].tipo == 1)
return;
else
{
a.Izquierdo().Copiar(ab);
CrearArbol(a,v,n,++x);
a.Derecho().Copiar(ab);
CrearArbol(a,v,n,++x);
}
}
}

Y las funciones que utiliza son de una clase Arbin<T>, y son las siguientes:

template <class T>
void arbin<T>::Copiar(const arbin<T> & origen){

if(!origen.Esvacio()){
raiz = new nodo(origen.raiz->info);

Izquierdo().Copiar(origen.raiz->izq);
Derecho().Copiar(origen.raiz->der);
}
}


template <class T>
arbin<T> & arbin<T>::Izquierdo() {
return raiz->izq;
}

template <class T>
arbin<T> & arbin<T>::Derecho() {
return raiz->der;
}