Exercice 1 :
1. Ecrire un dictionnaire dont les clés sont les entiers de 1à50, tel que la valeur correspondant à nest
la liste des entiers de 1à50 que ndivise.
2. Représenter graphiquement le graphe orienté dont les sommets sont les entiers de 1à50, de sorte qu’il
y ait une arête allant de nàmsi et seulement si ndivise m
3 Arbres binaires
Un arbre binaire est défini récursivement de la façon suivante : c’est une liste Ttelle que soit T=[] soit
T=[a,T1,T2], où aest la racine (ou l’étiquette à la racine) de l’arbre et T1 et T2 sont des arbres binaires.
Exercice 2 :
Fonctions élémentaires.
1. Ecrire une fonction est_AB sous Sage qui à une liste renvoie le booléen True si cette liste est un arbre
binaire, False sinon. Tester cette fonction.
2. Ecrire une fonction prof qui à un arbre binaire associe sa profondeur.
3. Ecrire une fonction GrapheOr qui à un arbre binaire associe un graphe orienté de la façon suivante :
— les sommets du graphe sont les noeuds de l’arbre
— il y a une arête allant d’un noeud nà un autre msi et seulement si nest le fils gauche de mou
mest le fils droit de n.
Remarque : la donnée de ce graphe orienté et de la racine détermine de façon unique l’arbre binaire
4. Ecrire une fonction repr() qui à un arbre binaire associe une représentation graphique du graphe
orienté ci-dessus. On pourra utiliser les options
MonGraphe.show(layout=’tree’, tree_root=racine_de_l_arbre, tree_orientation="down")
Exercice 3 :
Parcours d’arbres binaires.
1. Ecrire un algorithme de parcours en profondeur infixe.
2. Ecrire un algorithme de parcours en largeur.
Exercice 4 :
Un arbre binaire est appelé arbre binaire de recherche si et seulement si l’ensemble des noeuds/étiquettes
est muni d’une relation d’ordre telle que
— si l’arbre est non-vide, alors tout noeud du sous-arbre gauche (resp. droit) est inférieur (resp.
supérieur) à la racine.
— les sous-arbres gauche et droit sont tous deux des arbres binaires de recherche.
1. Représenter graphiquement un exemple d’arbre binaire de recherche.
2. Ecrire une fonction est_ABR sous Sage qui à une liste renvoie le booléen True si cette liste est un arbre
binaire, False sinon.
Exercice 5 :
Production d’un arbre binaire de recherche à partir d’une liste d’entiers.
1. Ecrire une procédure insere_ABR qui à un arbre binaire de recherche Aet un nombre réel rrenvoie
l’arbre binaire de recherche dans lequel a été inséré le noeud r.
On peut écrire cet algorithme récursivement : si rest inférieur à la racine de A, alors on insère rdans le
sous-arbre de gauche, sinon on l’insère dans le sous-arbre de droite de A.
2. Majorer le coût de cet algorithme en fonction de la profondeur de l’arbre A(répondre par un raison-
nement, et non une expérience).
2