Adloun

informatique (MP2I/MPI) · Chapitre 10 · Exercice de TD

Le miroir

Arbres · niveau 2

Énoncé

Écrire miroir, prouver que , et déterminer le parcours infixe du miroir en fonction de celui de l'arbre.

Corrigé


(* Renvoie l'arbre symetrique de a. Complexite : Theta(n) en temps. *)
let rec miroir = function
  | Vide -> Vide
  | Noeud (g, e, d) -> Noeud (miroir d, e, miroir g)     (* d et g ECHANGES *)
Démonstration (du fait que )

Par induction structurelle. Deux constructeurs, deux cas.

Cas . .

Cas .

qui vaut par hypothèse d'induction appliquée à et à .

Le parcours infixe est renversé : .

Démonstration

Induction structurelle. Le cas est immédiat. Pour :

l'avant-dernière égalité utilisant , démontré au chapitre chap:induction.

Vérification : sur l'arbre de l'exercice 10.1, et . Les deux listes sont bien l'inverse l'une de l'autre, et : vérifié.

Et les deux autres parcours ? Le préfixe du miroir n'est pas l'inverse du préfixe : c'est l'inverse du postfixe. En effet, préfixe visite racine-gauche-droite ; en renversant l'arbre puis la liste, on obtient gauche-droite-racine, qui est le postfixe. Symétriquement, . Seul l'infixe est stable par cette double symétrie, parce qu'il est le seul des trois à être symétrique dans sa définition.

À quoi cela sert. À obtenir gratuitement la variante décroissante de tout algorithme fondé sur l'infixe : parcourir un arbre binaire de recherche par ordre décroissant, c'est parcourir son miroir par ordre croissant — ou, plus économiquement, échanger les deux appels récursifs, ce qui coûte au lieu de .

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre