Parece que lo he conseguido, con el siguiente código. Yo diría que me está funcionando correctamente...
Código PHP:
<?php
$padre = "1";
echo "<ul><li>".$padre;
hijos($padre, $padre);
echo "</ul>";
function hijos($id, $padre) {
$reg = consulta('idHijo', TABLA, "idPadre='$id'", '', '', 'idHijo');
if (count($reg)>0){ echo "<ul>"; }
for ($i=0; $i < count($reg); $i++) {
if ($padre!=$reg[$i]['idHijo']){
if (!esPadre($reg[$i]['idHijo'])){
echo "<li>".$reg[$i]['idHijo']."</li>";
if ($i==count($reg)-1){ echo "</ul>"; }
}else{
echo $reg[$i]['idHijo'];
hijos($reg[$i]['idHijo'], $padre);
}
}
}
}
?>
Esto lo he hecho partiendo desde el nodo "padre absoluto". Ahora tengo que buscar la forma de que la construcción de la estructura se pueda hacer a partir de cualquier nodo, de forma que primero tengo que sacar todos sus "padres" hasta llegar al "padre absoluto" y a partir de ahí, usar lo que he puesto arriba.
Seguiré peleando pues.
Gracias de antemano.