diff --git a/functions/lego_classes.py b/functions/lego_classes.py
index 92ed684dc55261b904d5f255340974d880397934..eae5ee3789c3e409afadde6ffd615f0be27193a7 100644
--- a/functions/lego_classes.py
+++ b/functions/lego_classes.py
@@ -63,3 +63,23 @@ class LegoComponent:
         return f"Lego Component [{self.id}]"
 
 # TODO: Adjust default output when printing an item or component
+
+def print_component_tree(root, level=0, is_last=False):
+    # print component
+    component_padding = ""
+    if level > 0:
+        component_padding += "│   " * (level - 1)
+        if is_last:
+            component_padding += "└── "
+        else:
+            component_padding += "├── "
+    print(f"{component_padding}{root}")
+    # recursively print child components
+    for i, component in enumerate(root.components):
+        is_last_ = i == len(root.components) - 1 and len(root.items) == 0
+        print_component_tree(component, level + 1, is_last_)
+    # print items
+    for i, item in enumerate(root.items):
+        item_padding = "│   " * level
+        item_padding += "├── " if i < len(root.items) - 1 else "└── "
+        print(f"{item_padding}{item}")