diff --git a/src/morse.c b/src/morse.c
index 97867214d98d53ab9f3c9fef84acb0aedc12a7b3..efd6bef0e566ec8e13eace19e2fbc88838937a9d 100644
--- a/src/morse.c
+++ b/src/morse.c
@@ -40,7 +40,32 @@ struct node_t * createTree(char * path){
     return NULL;
 }
 
-struct node_t * pushTree(struct node_t * tree, char letter, char * code){}
+struct node_t * pushTree(struct node_t * tree, char letter, char * code){
+    if (code != NULL) {
+        if (code[0] != '\0') {
+            if (code[0] == '.') {
+                if (tree->left == NULL) {
+                    tree->left = createNode('?');
+                }
+                return pushTree(tree->left, letter, code + 1);
+            }
+            else if (code[0] == '-') {
+                if (tree->right == NULL) {
+                    tree->right = createNode('?');
+                }
+                return pushTree(tree->right, letter, code + 1);
+            } else {
+                printf("Erreur de format !!\n");
+                return NULL;
+            }  
+        } else {
+            tree->letter = letter;
+            return tree;
+        }
+    } else {
+        return NULL;
+    }
+}
 
 void printTree(struct node_t * tree, int depth){}