diff --git a/04-2 DoppeltVerketteteListe/Personenliste.cs b/04-2 DoppeltVerketteteListe/Personenliste.cs
index bd6c80992e8b09924b35c52a65e425079d94d6e8..b2a61f8007d3da30ade492d2d6849c34a9b407c3 100644
--- a/04-2 DoppeltVerketteteListe/Personenliste.cs	
+++ b/04-2 DoppeltVerketteteListe/Personenliste.cs	
@@ -140,5 +140,13 @@ namespace _04_2_DoppeltVerketteteListe
             }
             Console.WriteLine("-------------------");
         }
+        public void PrintReverse()
+        {
+            for (LItem item = last; item != null; item = item.prev)
+            {
+                Console.WriteLine(item.name);
+            }
+            Console.WriteLine("-------------------");
+        }
     }
 }
diff --git a/04-2 DoppeltVerketteteListe/Program.cs b/04-2 DoppeltVerketteteListe/Program.cs
index 91e9ad8ee6b0bf3f93c8353fdc1b5a62cf05a756..00e13d67a642fc7c301f4ea016b03664a7e30cff 100644
--- a/04-2 DoppeltVerketteteListe/Program.cs	
+++ b/04-2 DoppeltVerketteteListe/Program.cs	
@@ -15,6 +15,7 @@ namespace _04_2_DoppeltVerketteteListe
 
             freunde.DeleteByName("Berta");
             freunde.Print();
+            freunde.PrintReverse();
         }
     }
 }
diff --git a/05-1 BinTree/05-1 BinTree.csproj b/05-1 BinTree/05-1 BinTree.csproj
new file mode 100644
index 0000000000000000000000000000000000000000..7efde3459c6b66823abbaa160d4be5c37eeb9a9a
--- /dev/null
+++ b/05-1 BinTree/05-1 BinTree.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_05_1_BinTree</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/05-1 BinTree/BinTree.cs b/05-1 BinTree/BinTree.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8392dd64cab1bcf7834b99c68bf476b02f94a06b
--- /dev/null
+++ b/05-1 BinTree/BinTree.cs	
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace _05_1_BinTree
+{
+    class BinTree
+    {
+        class BItem
+        {
+            public int number;
+            public BItem left = null, right = null;
+            public BItem (int Number) { number = Number; }
+        }
+        BItem root = null;
+
+        public void BInsert(int Number)
+        {
+            BItem newItem = new BItem(Number);
+            if (root == null)
+                root = newItem;
+            else
+            {
+                bool done = false;
+                BItem item = root;
+                do
+                {
+                    if (Number < item.number) // linker Teilbaum
+                    {
+                        if (item.left == null)
+                        {
+                            item.left = newItem;
+                            done = true;
+                        }
+                        else
+                            item = item.left;
+                    }
+                    else
+                    {
+                        if (item.right == null)
+                        {
+                            item.right = newItem;
+                            done = true;
+                        }
+                        else
+                            item = item.right;
+                    }
+                } while (!done);
+            }
+        }
+        public bool FindItem(int Number)
+        {
+            BItem item = root;
+            while (item != null)
+            {
+                if (Number == item.number)
+                    return true;
+                item = (Number < item.number) ? item.left : item.right;
+            }
+            return false;
+        }
+    }
+}
diff --git a/05-1 BinTree/Program.cs b/05-1 BinTree/Program.cs
new file mode 100644
index 0000000000000000000000000000000000000000..73d6c6650c8769e101a35ec1a1673dd4f1d63ab2
--- /dev/null
+++ b/05-1 BinTree/Program.cs	
@@ -0,0 +1,17 @@
+using System;
+
+namespace _05_1_BinTree
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            BinTree bt = new BinTree();
+            bt.BInsert(50);
+            bt.BInsert(80);
+            bt.BInsert(30);
+            bt.BInsert(40);
+            bt.BInsert(60);
+        }
+    }
+}
diff --git a/05-UbgCycleList-Mo/CycleList.cs b/05-UbgCycleList-Mo/CycleList.cs
index 8047125d817ff8dbc0105980af377c8b33e1a2ea..ac6ddee9d1f0d70a54deb8072a4ab045630b9fc8 100644
--- a/05-UbgCycleList-Mo/CycleList.cs
+++ b/05-UbgCycleList-Mo/CycleList.cs
@@ -11,19 +11,82 @@ namespace _05_UbgCycleList_Mo
     // Methoden:
     class CycleList
     {
+        class LItem
+        {
+            public string name;
+            public LItem prev=null, next = null;
+            public LItem(string Name) { name = Name; }
+        }
+        LItem first = null, last = null;
+        LItem iterator = null;
+
         public void AddEnd(string Name) // wie bisher
-        { }
+        {
+            LItem newItem = new LItem(Name);
+
+            if (first == null)
+                first = last = newItem;
+            else  // Es gibt schon Listenelemente
+            {
+                newItem.prev = last;
+                last.next = newItem;
+                last = newItem;
+                first.prev = null;
+            }
+        }
         public void CloseCycle() // letztes mit dem ersten Element verbinden
-        { }
+        { 
+            if (first != null)
+            {
+                last.next = first;
+                first.prev = last;
+            }
+
+        }
         public void Print()
-        { }
+        {
+            if (first == null)
+                return;
+            
+            LItem item = first;
+            do
+            {
+                Console.WriteLine(item.name);
+                item = item.next;
+                // Ende, gdw. item == null oder item == first
+            } while (!(item == null || item == first));
+        }
+        public IEnumerator<string> GetEnumerator()
+        {
+            if (first != null)
+            {
+                LItem item = first;
+                do
+                {
+                    yield return item.name;
+                    item = item.next;
+                    // Ende, gdw. item == null oder item == first
+                } while (!(item == null || item == first));
+            }
+        }
         public void SetIterator(int offset = 0) // Einen internen Zeiger (Iterator) auf das (anfang+offset) Listenelement setzen
-        { }
+        {
+            if (first == null)
+                iterator = null;
+            else
+            {
+                iterator = first;
+                for (int i = 0; i < offset; i++)
+                    iterator = iterator.next;
+            }
+        }
         public string GetName() // Den string zurückliefern, der im Iterator-Listenelement gespeichert ist
-        { }
-        public void MoveToNext()
-        { }
-        public void MoveToPrev()
-        { }
+        {
+            return iterator.name;
+        }
+        public void MoveToNext() { iterator = iterator.next; }
+        public void MoveToPrev() { iterator = iterator.prev; }
+
+        
     }
 }
diff --git a/05-UbgCycleList-Mo/Program.cs b/05-UbgCycleList-Mo/Program.cs
index 21f2f21c2510c350f484e7808bc3301504476b88..b35ff86604add65d5ebe45ff13613a92f996c9b9 100644
--- a/05-UbgCycleList-Mo/Program.cs
+++ b/05-UbgCycleList-Mo/Program.cs
@@ -10,7 +10,7 @@ namespace _05_UbgCycleList_Mo
             cl.Print();
             cl.AddEnd("Anton");
             cl.AddEnd("Berta");
-            cl.CloseCycle();
+            //cl.CloseCycle();
             cl.Print();
             Console.WriteLine("-------------");
             cl.AddEnd("Claudia");
@@ -25,6 +25,19 @@ namespace _05_UbgCycleList_Mo
                 Console.WriteLine(cl.GetName());
                 cl.MoveToNext();
             }
+            Console.WriteLine("-------------");
+            for (int i = 0; i < 5; i++)
+            {
+                Console.WriteLine(cl.GetName());
+                cl.MoveToPrev();
+            }
+
+
+            Console.WriteLine("************");
+            foreach (var item in cl)
+            {
+                Console.WriteLine(item);
+            }
         }
     }
 }
diff --git a/Prog2WienkopSS2021.sln b/Prog2WienkopSS2021.sln
index 089a74fa5d3abdbac7c5ab66ea648898a8287a52..f17d85ea2cc5dcb69f7d342eed55cd63c79dee24 100644
--- a/Prog2WienkopSS2021.sln
+++ b/Prog2WienkopSS2021.sln
@@ -31,7 +31,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-UbgCycleList-Di", "04-Ub
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-2 DoppeltVerketteteListe", "04-2 DoppeltVerketteteListe\04-2 DoppeltVerketteteListe.csproj", "{A253CA17-DA49-47FB-B8A6-C24D84C9A3E6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-UbgCycleList-Mo", "05-UbgCycleList-Mo\05-UbgCycleList-Mo.csproj", "{69264CD7-160B-45D5-8880-703EEBD6D7C2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "05-UbgCycleList-Mo", "05-UbgCycleList-Mo\05-UbgCycleList-Mo.csproj", "{69264CD7-160B-45D5-8880-703EEBD6D7C2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-1 BinTree", "05-1 BinTree\05-1 BinTree.csproj", "{7C9FA089-4364-4326-A973-99FD15DAFBC1}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -99,6 +101,10 @@ Global
 		{69264CD7-160B-45D5-8880-703EEBD6D7C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{69264CD7-160B-45D5-8880-703EEBD6D7C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{69264CD7-160B-45D5-8880-703EEBD6D7C2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7C9FA089-4364-4326-A973-99FD15DAFBC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7C9FA089-4364-4326-A973-99FD15DAFBC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7C9FA089-4364-4326-A973-99FD15DAFBC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7C9FA089-4364-4326-A973-99FD15DAFBC1}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE