Algorithme : Opérations de base sur des arbres n-aires Début Var T: arbre Var F: file 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 Si RécupérerFilsGaucheDroit(N) = nil Retourner Vrai 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 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 Fin