diff --git a/slides/cours_15.md b/slides/cours_15.md
index f9e34355946698b1736cf75bd912e2058723a0d7..ec9df4e5756b19cf5a3188f41d3f355e28bf4e90 100644
--- a/slides/cours_15.md
+++ b/slides/cours_15.md
@@ -376,7 +376,7 @@ typedef struct _node {
 ```C 
 NULL              -> arbre (vide)
 <n, arbre, arbre> -> arbre
-visiter(arbre)     -> noeud
+visiter(arbre)     -> noeud (la racine de l'arbre)
 gauche(arbre)     -> arbre (sous-arbre de gauche)
 droite(arbre)     -> arbre (sous-arbre de droite)
 ```
@@ -424,8 +424,10 @@ graph TD;
 
 # Parcours d'arbres binaires
 
-* Appliquer une opération à tous les noeuds de l'arbre.
-* Nécessité de **parcourir** l'arbre.
+* Appliquer une opération à tous les noeuds de l'arbre,
+* Nécessité de **parcourir** l'arbre,
+* On utilise uniquement l'interface définie plus haut (visiter, gauche,
+  droite).
 
 ## Une idée de comment parcourir cet arbre?
 
@@ -475,7 +477,7 @@ graph TD;
 * La récursivité c'est la vie.
     
 ```
-parcours_infixe(arbre a) :
+parcours_infixe(arbre a)
     si est_pas_vide(gauche(a))
        parcours_infixe(gauche(a))
     visiter(A)
@@ -506,7 +508,7 @@ graph TD;
 :::: column
 
 ```
-parcours_infixe(arbre a) :
+parcours_infixe(arbre a)
     si est_pas_vide(gauche(a))
        parcours_infixe(gauche(a))
     visiter(A)
@@ -557,12 +559,12 @@ graph TD;
 :::: column
 
 ```
-parcours_infixe(arbre a) :
-si est_pas_vide(gauche(a))
-   parcours_infixe(gauche(a))
-visiter(A)
-si est_pas_vide(droite(A))
-   parcours_infixe(droite(A))
+parcours_infixe(arbre a)
+    si est_pas_vide(gauche(a))
+       parcours_infixe(gauche(a))
+    visiter(A)
+    si est_pas_vide(droite(A))
+       parcours_infixe(droite(A))
 ```
 
 ## Remarque 
@@ -600,7 +602,7 @@ void tree_print(tree_t tree, int n) {
             printf(" ");
         }
         printf("%d\n", tree->info);
-        tree_print(tree->gauche, n+1);
+        tree_print(tree->right, n+1);
     }
 }
 ```
@@ -624,9 +626,86 @@ void tree_print(tree_t tree, int n) {
 
 ```
 parcours_infixe(arbre a)
-si est_pas_vide(gauche(a))
-   parcours_infixe(gauche(a))
-visiter(A)
-si est_pas_vide(droite(A))
-   parcours_infixe(droite(A))
+    si est_pas_vide(gauche(a))
+       parcours_infixe(gauche(a))
+    visiter(A)
+    si est_pas_vide(droite(A))
+       parcours_infixe(droite(A))
 ```
+
+# Correction
+
+* Les deux parcours sont des modifications **triviales**[^1] de l'algorithme
+  infixe.
+
+## Le parcours postfixe
+
+```python
+parcours_postfoxe(arbre a)
+    si est_pas_vide(gauche(a))
+       parcours_postfixe(gauche(a))
+    si est_pas_vide(droite(a))
+       parcours_postfixe(droite(a))
+    visiter(a)
+```
+
+## Le parcours préfixe
+
+```python
+parcourx_préfixe(arbre a)
+    visiter(a)
+    si est_pas_vide(gauche(a))
+        parcours_préfixe(gauche(a))
+    si est_pas_vide(droite(a))
+        parcours_préfixe(droite(a))
+```
+
+. . .
+
+**Attention:** L'implémentation de ces fonctions en C sont **à faire** en
+exercice (inspirez vous de ce qu'on a fait avant)!
+
+# Exercice: parcours
+
+## Comment imprimer l'arbre ci-dessous?
+
+```
+            f
+        /
+            e
+    +
+        d
+*
+        c
+    -
+            b
+        *
+            a
+```
+
+. . .
+
+## Bravo vous avez trouvé! 
+
+* Il s'agissait du parcours D, R, G.
+
+# Implémentation
+
+## Vous avez 5 min pour implémenter cette fonction et la poster sur matrix!
+
+. . .
+
+```C 
+void pretty_print(tree_t tree, int n) {
+    if (NULL != tree) {
+        pretty_print(tree->right, n+1);
+        for (int i = 0; i < n; ++i) {
+            printf(" ");
+        }
+        printf("%d\n", tree->info);
+        pretty_print(tree->left);
+    }
+}
+```
+
+[^1]: Copyright cours de mathématiques pendant trop d'années.