Non sò bene a cosa ti serva l'array quindi ti scrivo una funzione generica che restituisce un array contenente un elemento titolo con il titolo della categoria e figli con un altro array di cui le chiavi sono gli id dei record figli e cosi via ricorsivamente...

Codice PHP:

function cat_genealogy($start=0)
{
    
    
$row=mysql_fetch_array(mysql_query("SELECT * FROM categorie WHERE id='{$start}'"));
    
    
$return['titolo']=$row['titolo'];
    
    
$result=mysql_query("SELECT * FROM categorie WHERE padre='{$start}'");
    while (
$row=mysql_fetch_array($result))
    {            
        
$return['figli'][$row['id']]=cat_genealogy($row['id']); //ricorsiva: figli indiretti
    
}
    
    return 
$return;