Skip to content
Snippets Groups Projects
Commit 73c2d4f7 authored by Uwe Wienkop's avatar Uwe Wienkop
Browse files

2021-04-19 Intro binäre Bäume

parent abe28beb
No related branches found
No related tags found
No related merge requests found
......@@ -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("-------------------");
}
}
}
......@@ -15,6 +15,7 @@ namespace _04_2_DoppeltVerketteteListe
freunde.DeleteByName("Berta");
freunde.Print();
freunde.PrintReverse();
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>_05_1_BinTree</RootNamespace>
</PropertyGroup>
</Project>
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;
}
}
}
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);
}
}
}
......@@ -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; }
}
}
......@@ -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);
}
}
}
}
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment