Dado que en cada item ejecutas la función árbol, entonces debes verificar que la consulta que ejecutas te devuelve algún resultado para imprimir <ul></ul> ¿Me explico?, Al imprimir Adultos o Infantil, ejecutas la función árbol para ver si esas categorías tienen algún hijo, y al ejecutarla, imprimes el <ul>, pero como no hay datos para mostrar, se imprime inmediatamente el cierre </ul>. Haz algo así:
Código PHP:
function arbol( $padre , $primero = false ){
$r = mysql_query( "SELECT * FROM test where id_padre ='$padre' ORDER BY tabindex" );
if(mysql_num_rows($r) > 0) {
echo '<ul';
if($primero == true) {
echo ' id="treemenu3" class="treeview"';
}
echo '>';
while( $rs = mysql_fetch_assoc( $r ) ){
echo "<li>".$rs["nombre"];
arbol( $rs["id"] );
echo "</li>";
} mysql_free_result( $r );
echo "</ul>";
}
}
arbol( 0 , true );
Saludos,