diff --git a/TD01/code/arbre_k_aire.py b/TD01/code/arbre-k-aire.py
similarity index 54%
rename from TD01/code/arbre_k_aire.py
rename to TD01/code/arbre-k-aire.py
index d230728c1ca9fc5005edb67936f62293f35d9077..652e42cedaadf5c9f5f56ea1990e6a2cb275a3c4 100644
--- a/TD01/code/arbre_k_aire.py
+++ b/TD01/code/arbre-k-aire.py
@@ -1,3 +1,5 @@
+import sys
+
 class Noeud:
     def __init__(self, v, c = []):
         self.v = v
@@ -11,6 +13,10 @@ def parcours_affiche(arbre):
 
 
 def parcours_recherche(arbre, valeur):
+
+    if arbre is None:
+        return False
+
     stack = arbre.c
 
     if valeur > arbre.v:
@@ -19,15 +25,12 @@ def parcours_recherche(arbre, valeur):
     if valeur == arbre.v:
         return True
 
-    prev = stack[0].v
+    prev = sys.maxsize
 
     while len(stack) > 0:
-
         children = stack.pop(0)
-
         if valeur == children.v:
             return True
-
         if valeur > prev and valeur < children.v:
             stack = children.c
             prev = stack[0].v
@@ -36,8 +39,18 @@ def parcours_recherche(arbre, valeur):
 
     return False
 
+if __name__=="__main__": 
+
+    racine = Noeud(13, [Noeud(4, [Noeud(1), Noeud(2), Noeud(3)]), Noeud(8, \
+    [Noeud(5), Noeud(6), Noeud(7)]),  Noeud(12, [Noeud(9), Noeud(10), Noeud(11)])])
+
+    print(parcours_affiche(racine))
+
+    # renvoie False pour un arbre vide
+    parcours_recherche(None, -1)
 
-racine = Noeud(13, [Noeud(4, [Noeud(1), Noeud(2), Noeud(3)]), Noeud(8, [Noeud(5), Noeud(6), Noeud(7)]),  Noeud(12, [Noeud(9), Noeud(10), Noeud(11)])])
+    # 11 est dans l'arbre
+    assert parcours_recherche(racine, 11) == True
 
-print(parcours_affiche(racine))
-print(parcours_recherche(racine, 11))
\ No newline at end of file
+    # 12 n'est pas dans l'arbre
+    assert parcours_recherche(racine, 12) == False
\ No newline at end of file
diff --git a/TD01/code/arbre-parcours-largeur.py b/TD01/code/arbre-parcours-largeur.py
new file mode 100644
index 0000000000000000000000000000000000000000..91cf13a475c93e98d07f4a353e7065260fdf8539
--- /dev/null
+++ b/TD01/code/arbre-parcours-largeur.py
@@ -0,0 +1,35 @@
+class Noeud:
+    def __init__(self, v, c = []):
+        self.v = v
+        self.c = c
+
+def parcours(n):
+    stack = []
+    stack.append(n)
+    r = []
+    while len(stack) > 0:
+        current = stack.pop(0)
+        r.append(current.v)
+        for v in current.c:
+            stack.append(v)
+    return r
+
+if __name__=="__main__": 
+
+    print(parcours(Noeud(1,                         \
+                    [                               \
+                        Noeud(2, [                  \
+                            Noeud(4), Noeud(5)      \
+                        ]),                         \
+                        Noeud(3)                    \
+                    ]                               \
+                )                                   \
+    ))
+
+    # [1, 2, 3, 4, 5]
+    print(parcours(Noeud(5, [Noeud(4, [Noeud(2), Noeud(1)]), Noeud(3)])))
+    # [5, 4, 3, 1, 2]
+    print(parcours(Noeud(5, [Noeud(1), Noeud(2), Noeud(3), Noeud(4)])))
+    # [5, 1, 2, 3, 4]
+    print(parcours(Noeud(1, [Noeud(5), Noeud(4), Noeud(3), Noeud(2)])))
+    # [1, 5, 4, 3, 2]
diff --git a/TD01/code/arbre-tuple.py b/TD01/code/arbre-tuple.py
new file mode 100644
index 0000000000000000000000000000000000000000..6eb10eecebb03357caee1c585b3fbde0ab0092a7
--- /dev/null
+++ b/TD01/code/arbre-tuple.py
@@ -0,0 +1,56 @@
+import sys
+
+class Noeud:
+    def __init__(self, v, c = []):
+        self.v = v
+        self.c = c
+
+def parcours_affiche(arbre):
+    for c in arbre.c:
+        parcours_affiche(c)
+
+    print(arbre.v)
+
+
+def parcours_recherche(arbre, valeur):
+
+    if arbre is None:
+        return False
+
+    stack = arbre.c
+
+    if valeur > arbre.v:
+        return False
+
+    if valeur == arbre.v:
+        return True
+
+    prev = sys.maxsize
+
+    while len(stack) > 0:
+        children = stack.pop(0)
+        if valeur == children.v:
+            return True
+        if valeur > prev and valeur < children.v:
+            stack = children.c
+            prev = stack[0].v
+        else:
+            prev = children.v
+
+    return False    
+
+if __name__=="__main__": 
+
+    racine = Noeud(13, [Noeud(4, [Noeud(1), Noeud(2), Noeud(3)]), Noeud(8, \
+    [Noeud(5), Noeud(6), Noeud(7)]),  Noeud(12, [Noeud(9), Noeud(10), Noeud(11)])])
+
+    print(parcours_affiche(racine))
+
+    # renvoie False pour un arbre vide
+    parcours_recherche(None, -1)
+
+    # 11 est dans l'arbre
+    assert parcours_recherche(racine, 11) == True
+
+    # 12 n'est pas dans l'arbre
+    assert parcours_recherche(racine, 12) == False
\ No newline at end of file