En fait, je fais le "monArbre.find" de façon récursive tout au long de mon processus (je ne peux pas faire le .find sans retraverser complètement l'arbre depuis le début, ce qui n'est pas du tout optimal).
Voilà ce que j'ai, de mon côté :
monArbre = vide
quiEstMonPere = vide
maListeIssueDeSQL
pour chaque élément de ma liste
quiEstMonPere[idFiston] = idPapa
maListeParID[idFiston] = mon élément en cours
monArbre = construireArbre(quiEstMonPere, idAncetre, maListeParId)
---
fonction construireArbre(quiEstMonPere, idAncetre, maListeParId)
monArbrePartiel = vide
pour chaque élément de quiEstMonPere (idPapa, idFiston)
quiEstMonPere[idFiston].supprime
si idPapa = idAncetre
monArbrePartiel[idPapa][donnees] = maListeParId(idPapa)
monArbrePartiel[idPapa][enfants] = construireArbre(quiEstMonPere, idPapa, maListeParId)
retourner monArbrePartiel