1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ArbreSuff(Texte t)
self(NULL) # appel au constructeur simple, pour créer la racine
ouvCour <- nouvelle Liste() # liste des noeuds ouverts pour l'itération courante
ouvCour.ajouter(self) # au début, ouvCour ne contient que la racine
pour i de 1 Ã t.taille()
c <- alphabet[t[i]] # conversion ASCII -> code interne
ouvSuiv <- nouvelle Liste() # liste des noeuds ouverts pour l'itération suivante
ouvSuiv.ajouter(self) # la racine fait toujours partie des noeuds ouverts
Itérateur ouverts <- ouvCour.itérateur() # On utilise un itérateur pour parcourir la liste ouvCour
tant que ouverts.hasNext()
noeud <- ouverts.next()
si noeud.fils[c] = NIL
noeud.fils[c] <- nouveau ArbreSuff(noeud)
noeud.fils[c].position <- i - noeud.profondeur
ouvSuiv.ajouter(noeud.fils[c])
ouvCour <- ouvSuiv # on remplace par ouvSuiv la liste qui vient d'être parcourue
# fin du constructeur, maintenant "self" est la racine de l'arbre des suffixes de t |
Partager