Pensa alla domanda come a un albero genealogico, nella sezione PS ti spiegherò che cos'è esattamente, ma l'albero genealogico è più facile da immaginare: così padre, ha figli, quei bambini potrebbero avere più bambini quei bambini potrebbero avere più figli, ecc.
1- Non ho l'intera informazione in memoria per attraversarli. Con ogni chiamata di metodo e colpendo il database ho solo il padre a un certo livello e i suoi figli. Vedi qui è l'alto livello del metodo che ho e ho bisogno di un po 'come usarne alcune buone parti:
private void Foo(string fatherNode)
{
// call some DB scripts and grab data you need to work with.
int numberOfKids = // get it from the thing you populated from the DB call.
for(int i = 1 to numberOfKids)
{
Node Child = // grab child[i] from the list we populated from DB calls
//Add it to the treeView
}
}
Bene, questo funzionava perché si trattava di un'applicazione GUI e con ciascun evento "clic" che stavamo richiedendo solo un livello di informazioni ma ora ho bisogno di una nuova funzionalità in cui posso fare clic su un pulsante Esporta e scrive TUTTO struttura di questo intero albero genealogico in un file XML .. (così puoi espandere quei nodi e vedere ancora la gerarchia familiare)
2- Ci sono molti dati. Un Padre potrebbe avere 400 bambini, ogni bambino potrebbe avere 10 figli in più e ognuno di questi bambini potrebbe avere altri 500 bambini ... quindi devo anche preoccuparmi di ottenere eccezioni di memoria ...
3- Ricorsione? possiamo davvero caricare TUTTA questa gerarchia in memoria? Non credo che sia così ... l'obiettivo è esportarlo in un SO XML Forse il modo più efficiente è scrivere un buon algoritmo che ad ogni chiamata scrive un livello di gerarchia in un file e non carica l'intera cosa in memoria. ..
Ma mi sto strappando i capelli e sbattendo la testa sulla scrivania e non posso decifrare il codice e capirlo ... Allora, quali sono i tuoi suggerimenti sul codice pseduo ... Sto usando C # tra l'altro.
PS: Questa è in realtà una gerarchia di Bioinformatica clinica, quindi dici genomi umani Ok .. ora ci sono 27000 geni sotto, Ok ora ottiene gene234 e diciamo quali sono i suoi figli, .. .