Ex 3 On veut compter le nombre Cnd’arbres diff´erents de sommets 0, . . . , n −1 (on parle ici d’arbres
non orient´es ; le calcul a ´et´e effectu´e d’une autre mani`ere en exercice 1). Pour cela, on va transiter par
des arbres orient´es (et donc aussi enracin´es). Pour construire un tel arbre orient´e, on doit choisir n−1
arˆetes orient´ees. On appelle construction un n−1 uplet d’arˆetes orient´ees donnant un arbre. Notez que
deux constructions peuvent donner le mˆeme arbre et que tout n−1 uplet n’est pas une construction
(le choix des arˆetes pouvant ne pas mener `a un arbre orient´e). On note Dnle nombre de constructions
dans le cas de nsommets (on compte donc le nombre de uplets et pas le nombre d’arbres orient´es).
1. Dans un premier compte, on choisit l’un des Cnarbres non orient´es. Choisir une racine oriente
chaque arˆete et il reste `a choisir l’ordre de ces arˆetes dans le uplet. En utilisant ce raisonnement,
montrer que Dn=n!Cn.
2. Dans un second temps, on part du graphe vide et on ajoute une arˆete orient´ee puis une seconde
puis une troisi`eme etc. Initialement, on a ncomposantes connexes formant une forˆet de narbres
r´eduits `a leurs racines. L’ajout de chaque arˆete orient´ee fusionne deux composantes. Quel est
le nombre de choix possibles pour la k-i`eme arˆete (lors de ce choix, on a n−k+ 1 composantes
connexes form´ees d’arbres orient´es et on doit en fusionner deux en gardant des arbres orient´es) ?
En d´eduire la valeur de Dn.
3. Conclure que Cn=nn−2.
Ex 4 Ecrire une fonction arbreDFS : graphe →int →graphe qui `a partir d’un graphe non orient´e
et d’un num´ero de sommet renvoie l’arbre orient´e de parcours en profondeur `a partir du sommet ar-
gument. On repr´esente ici les graphes par le tableau des listes d’adjacence.
Ex 5 Ecrire une fonction compteF : arbre →int renvoyant le nombre de feuilles d’un arbre.
Ex 6 On choisit ici la d´efinition des arbres binaires sans l’arbre vide. Dans un arbre binaire t,
on note i(t) la somme des profondeurs des noeuds internes et e(t) celle des profondeurs des feuilles.
D´emontrer que dans un arbre binaire t`a n(t) noeuds internes on a
e(t) = i(t)+2n(t)
Ex 7 Si aest un arbre non vide, on appelle d´es´equilibre de ala diff´erence des hauteurs du fils gauche
et du fils droit de a(d(a) = h(g)−h(d)). On d´efinit r´ecursivement les arbres AVL par
- l’arbre vide est un arbre AVL
-a=Noeud(g, c, d) est un arbre AVL si get dsont des arbres AVL et si d(a)∈ {−1,0,+1}.
1. Montrer qu’un arbre AVL est ´equilibr´e.
2. Ecrire une fonction testant si un arbre poss`ede la propri´et´e AVL. On ne devra parcourir qu’une
unique fois chaque noeud de l’arbre.
Ex 8 On appelle arbre 0-1 un arbre binaire dont les ´etiquettes valent 0 ou 1 et qui v´erifie les conditions
suivantes :
- la racine (si l’arbre est non vide) est d’´etiquette 0 ;
- le parent d’un noeud d’´etiquette 1 est d’´etiquette 0 ;
- pour chaque noeud, tout les chemins de ce noeud `a une feuille contiennent le mˆeme nombre de
noeuds d’´etiquette 0.
1. Montrer que le squelette d’arbre ci-dessous peut ˆetre ´etiquet´e afin de devenir un arbre 0-1.
2