intenta algo asi:
Código PHP:
function crearArbol($tabla,$id_field,$show_data,$link_field,$parent,$prefix){
$sql='select * from '.$tabla.' where '.$link_field.'='.$parant;
$rs=@mysql_query($sql);
if($rs){
while($arr=mysql_fetch_array($rs)){
echo($prefix.$res[$show_data].'<br>');
crearArbol($tabla,$id_field,$show_data,
$link_field,$arr[$id_field],$prefix.$prefix);
}
}
}
/*y la usas*/
crearArbol('categorias','idcat','categoria','idp',0,'-');
no la he probado, pero en el job hice algo asi, a lo mejor la tienes que modificar para que funcione pero te dara la idea.