28/05/2010, 14:50
|
| | Fecha de Ingreso: abril-2005
Mensajes: 151
Antigüedad: 19 años, 7 meses Puntos: 1 | |
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;
} |