Fonctions sur les arbres
Parcours d'arbres
Parcours préfixe
FCT PROFONDEUR_PREFIXE(A : arbre binaire strict) :
SI A est une feuille ALORS :
TRAITER(A)
SINON A est un noeud interne de la forme N(e,g,d) :
TRAITER(e)
PROFONDEUR_PREFIXE(g)
PROFONDEUR_PREFIXE(d)
FIN SI
FIN FCT
Parcours infixe
FCT PROFONDEUR_INFIXE(A : arbre binaire strict) :
SI A est une feuille ALORS :
TRAITER(A)
SINON A est un noeud interne de la forme N(e,g,d) :
PROFONDEUR_INFIXE(g)
TRAITER(e)
PROFONDEUR_INFIXE(d)
FIN SI
FIN FCT
Parcours postfixe
FCT PROFONDEUR_POSTFIXE(A : arbre binaire strict) :
SI A est une feuille ALORS :
TRAITER(A)
SINON A est un noeud interne de la forme N(e,g,d) :
PROFONDEUR_POSTFIXE(g)
PROFONDEUR_POSTFIXE(d)
TRAITER(e)
FIN SI
FIN FCT
Parcours largeur
FCT PARCOURS_LARGEUR(A : arbre binaire strict) :
a_traiter <- file vide
a_traiter <- enfiler A
TANT QUE a_traiter non vide FAIRE :
a <- defiler(a_traiter)
SI a est une feuille ALORS :
TRAITER(a)
SINON a est un noeud interne de la forme N(e,g,d) :
TRAITER(e)
a_traiter <- enfiler(g)
a_traiter <- enfiler(d)
FIN Si
FIN FCT
Binarisation
FCT AUX(foret : liste d'arbres frères) :
SI foret est vide ALORS :
RENVOYER ⊥
SINON foret est de la forme N(e,fils) :
RENVOYER(e, AUX(fils), AUX(queue de foret))
FIN SI
FIN FCT
FCT BINARISE(A : arbre d'arité quelconque non vide) :
RENVOYER AUX([A])
FIN FCT
Rappel : Un arbre d'arité quelconque est stocké sous la forme N(e,[a1,...,an]) où e est l'étiquette et an,...,an sont des arbres d'arité quelconque placés dans une liste
Débinarisation
FCT AUX(A) :
SI A est vide ALORS :
RENVOYER ⊥
SINON A est de la forme N(e,g,d) :
lc <- AUX(g)
rs <- AUX(d)
RENVOYER N(e,lc)::rs
FIN SI
FIN FCT
FCT DEBINARISE(A : arbre binaire correspondant à une représentation LCRS) :
RENVOYER tete de AUX(A)
FIN FCT