diff --git a/src/morse.c b/src/morse.c
index 1a390bafc32d0142ea220703093c474377857999..97867214d98d53ab9f3c9fef84acb0aedc12a7b3 100644
--- a/src/morse.c
+++ b/src/morse.c
@@ -19,7 +19,26 @@ struct node_t * createNode(char letter)
     return node;
 }
 
-struct node_t * createTree(char * path){}
+struct node_t * createTree(char * path){
+    FILE *f = fopen(path, "r");
+    char buffer[7];     
+    if (f != NULL) {
+        struct node_t* tree = createNode('*');
+        while (fgets(buffer, 7, f)) {
+            buffer[strcspn(buffer, "\r\n")] = 0;
+            char letter;
+            char code[6];
+            if (strlen(buffer) == 0) {
+                continue;
+            }
+            sscanf(buffer, "%c%[^\n]", &letter, code);
+            pushTree(tree, letter, code);
+        }
+        fclose(f);
+        return tree;
+    }
+    return NULL;
+}
 
 struct node_t * pushTree(struct node_t * tree, char letter, char * code){}