diff --git a/mcut.py b/mcut.py
index a592722869d183410c55adcb506fd563481798bb..f4d34b5088bc9e0b9f9e251880e4aeabe44f4d76 100644
--- a/mcut.py
+++ b/mcut.py
@@ -25,7 +25,16 @@ def cut_dimension(bbox):
             number 0 stands for red, 1 stands for green, and 2 stands for blue.
             In case of a draw, the smaller value has to be returned.
     """
-    pass # TODO
+    # TODO
+    differences = []
+    for component in bbox:
+        difference = component[1] - component[0]
+        differences.append(difference)
+
+    max_difference = max(differences)
+    longest_side_index = differences.index(max_difference)
+    return longest_side_index
+
 
 
 def recursive_median_cut(pixels, N, bbox=False):
@@ -54,7 +63,29 @@ def recursive_median_cut(pixels, N, bbox=False):
     if N == 0:
         (ravg, gavg, bavg) = imgutils.color_average(pixels)
         return [(ravg, gavg, bavg, pixel[3], pixel[4]) for pixel in pixels]
-    pass # TODO
+    # TODO
+    if bbox:
+        longest_side = cut_dimension(bbox)
+    else:
+        bbox = imgutils.bounding_box(pixels)
+        longest_side = cut_dimension(bbox)
+
+
+    # Sortiere die Pixel basierend auf der längsten Seite
+    sorted_pixels = sorted(pixels, key=lambda pixel: pixel[longest_side])
+
+    # Teile die sortierten Pixel in zwei Hälften
+    half = len(sorted_pixels) // 2
+    first_half = sorted_pixels[:half]
+    second_half = sorted_pixels[half:]
+
+    # Rufe den Median Cut-Algorithmus rekursiv für beide Hälften auf
+    first_half = recursive_median_cut(first_half, N-1, False)
+    second_half = recursive_median_cut(second_half, N-1, False)
+
+    # Füge die beiden Hälften wieder zusammen
+    result = first_half + second_half
+    return result
 
 
 def median_cut(image, ncuts=8):