Hola a todos, necesito obtener aquellos nodos que sean descendientes a un nodo. He conseguido que em diga cuantos nodos tienen descendientes, pero no cuales son. Si alguien sabe de c++ y de qt, Por favor ruego me ayuden.
Aqui adjunto el texto del codigo que tengo hecho.
[CODE]
int NodoBinario::numDescendientes(FunctorNodo *f)
{
int numDes = 0;
if(esHoja()) //no tiene hijos
return 0;
else {
if(hijoIzquierdo())
numDes+= 1+hijoIzquierdo()->numDescendientes(f);
if(hijoDerecho())
numDes+= 1+hijoDerecho()->numDescendientes(f);
}
return numDes;
}
Y luego en el principal se hace asi:
//DESCENDIENTES DE UN NODO
void Practica::descendientes(void)
{
bool ok = true;
QString resultado; //creamos una lista
// Creamos un functor que inserte el campo informativo de
// cada nodo en la lista
InsertarLista(functor);
// Pedimos un entero al usuario
QString str=QInputDialog::getText( this, "Descendientes nodo", "Introduzca un valor entero",
QLineEdit::Normal, QString::null, &ok);
if ( ok && !str.isEmpty() )
{
int numero = str.toInt( &ok );
if (! ok )
{
QMessageBox::critical(this, appName, "Debe introducir un número entero");
}
else
{
_nodoActual = _arbol->buscarNodo(numero);
if(_nodoActual) {
_nodoActual->numDescendientes(&functor);
QMessageBox::information(this, appName, "El numero de descendientes es: " +QString::number(_nodoActual->numDescendientes(&functor)));
}
else
{
QMessageBox::information(this, appName, "EL nodo no pertenece al arbol");
}
}
}
resultado = functor.verResultado();
QMessageBox::about(this, appName, "Los descendientes son= " +resultado);
}
Y aqui es donde tengo mi problema q no me muestra los descendientes.
Gracias, saludos.