efrei/algorithmique/arbres/arbre.algo

85 lines
2.1 KiB
Text
Raw Normal View History

2021-09-28 09:04:05 +02:00
Algorithme : Opérations de base sur des arbres n-aires
Début
Var T: arbre
2021-09-28 11:18:22 +02:00
Var F: file
2021-09-28 09:04:05 +02:00
Fonction EstVide(T: arbre): bool
Si T = nil:
Retourner Vrai
Sinon
Retourner Faux
FinSi
FinFonction
Fonction FilsGauche(T: arbre)
Retourner T->gauche
FinFonction
Fonction FilsDroit(T: arbre)
Retourner T->droit
FinFonction
Fonction RécupérerFilsGaucheDroit(T: arbre)
Si EstVide(T):
Retourner nil
FinSi
Retourner (FilsGauche(T), FilsDroit(T))
FinFonction
Fonction EstFeuille(T: arbre, N: noeud): bool
Si EstVide(T):
Retourner Faux
FinSi
2021-09-28 11:18:22 +02:00
Si RécupérerFilsGaucheDroit(N) = nil
Retourner Vrai
2021-09-28 09:04:05 +02:00
FinFonction
Fonction CalculerHauteurArbre(T: arbre): int
Si EstVide(T):
Retourner 0
FinSi
Si RécupérerFilsGaucheDroit(T) = nil:
Retourner 1
FinSi
Retourner 1 + max(CalculerHauteurArbre(FilsGauche(T)), CalculerHauteurArbre(FilsDroit(T)))
FinFonction
Fonction NombreNoeuds(T: arbre): int
Si EstVide(T):
Retourner 0
FinSi
Retourner 1 + NombreNoeuds(FilsGauche(T)) + NombreNoeuds(FilsDroit(T))
FinFonction
Fonction NombreFeuilles(T: arbre): int
Si EstVide(T):
Retourner 0
Sinon Si RécupérerFilsGaucheDroit(T) = nil
Retourner 1
FinSi
Retourner NombreFeuilles(FilsGauche(T)) + NombreFeuilles(FilsDroit(T))
FinFonction
Fonction NombreInterne(T: arbre): int
Si EstVide(T):
Retourner 0
Sinon Si RécupérerFilsGaucheDroit(T) = nil
Retourner 0
FinSi
Retourner 1 + NombreInterne(FilsGauche(T)) + NombreInterne(FilsDroit(T))
FinFonction
2021-09-28 11:18:22 +02:00
Procédure ParcoursLargeur(T: arbre)
Si EstVide(T):
Quitter
FinSi
Afficher(T)
Enfiler(F, FilsGauche(T))
Enfiler(F, FilsDroit(T))
ParcoursLargeur(Défiler(F))
FinProcédure
2021-09-28 09:04:05 +02:00
Fin