public Node Search(BinSearchTree tree, int s) { Node a = tree.root; while (a.data != s && a != null) { if (s < a.data) { a = a.left; } else { a = a.right; } } return(a); }
public void Insert(BinSearchTree tree, int s) { Node a = tree.root; Node b = null; while (a.data != s && a != null) { b = a; if (s < a.data) { a = a.left; } else { a = a.right; } } if (a == null) { a = new Node(s); a.left = null; a.right = null; if (b == null) { tree.root = a; return; } if (s < b.data) { b.left = a; } else { b.right = a; } } }
static void Main(string[] args) { IDictionary neu; int ersteauswahl; int zweiteauswahl; int dritteauswahl; int daten; bool weiter = true; ersteauswahl = Convert.ToInt32(Console.ReadLine()); // 1 ist SetSorted //2 ist SetUnsorted //3 ist Multisetsorted //4 ist Multisetunsorted //test /* Zweiteauswahl: * * erst array * dann liste * dann bin * dann avl * dann treap * * */ switch (ersteauswahl) { case 1: { zweiteauswahl = Convert.ToInt32(Console.ReadLine()); switch (zweiteauswahl) { case 1: { neu = new SetSortedArray(); break; } case 2: { neu = new SetSortedLinkedList(); break; } case 3: { neu = new BinSearchTree(); break; } case 4: { neu = new AVLTree(); break; } case 5: { neu = new Treap(); break; } default: break; } break; } case 2: { zweiteauswahl = Convert.ToInt32(Console.ReadLine()); switch (zweiteauswahl) { case 1: { neu = new SetUnsortedArray(); break; } case 2: { neu = new SetUnsortedLinkedList(); break; } default: break; } break; } case 3: { zweiteauswahl = Convert.ToInt32(Console.ReadLine()); switch (zweiteauswahl) { case 1: { neu = new MultiSetSortedArray(); break; } case 2: { neu = new MultiSetSortedLinkedList(); break; } default: break; } break; } case 4: { zweiteauswahl = Convert.ToInt32(Console.ReadLine()); switch (zweiteauswahl) { case 1: { neu = new MultiSetUnsortedArray(); break; } case 2: { neu = new MultiSetUnsortedLinkedList(); break; } default: break; } break; } default: break; } while (weiter == true) { switch (dritteauswahl) { case 1: { neu.print(); break; } case 2: { dritteauswahl = Convert.ToInt32(Console.ReadLine()); daten = Convert.ToInt32(Console.ReadLine()); if (daten < 0) { throw new ArgumentOutOfRangeException("Darf nicht kleiner 0 sein!"); } neu.delete(daten); break; } case 3: { dritteauswahl = Convert.ToInt32(Console.ReadLine()); daten = Convert.ToInt32(Console.ReadLine()); if (daten < 0) { throw new ArgumentOutOfRangeException("Darf nicht kleiner 0 sein!"); } neu.search(daten); break; } case 4: { dritteauswahl = Convert.ToInt32(Console.ReadLine()); daten = Convert.ToInt32(Console.ReadLine()); if (daten < 0) { throw new ArgumentOutOfRangeException("Darf nicht kleiner 0 sein!"); } neu.insert(daten); break; } default: break; } } }
static void Main(string[] args) { int switch_on = 0; IDictionary Test = null; string interfaceTyp = ""; void askMultiSetSorted() { interfaceTyp = "MultiSetSorted"; Console.WriteLine($"Welche Art von {interfaceTyp} möchten sie testen?"); Console.WriteLine("MultiSetSortedLinkedList --> 1"); Console.WriteLine("MultiSetSortedArray --> 2"); try { switch_on = Convert.ToInt32(ReadLine()); } catch (System.FormatException) { switch_on = 0; } switch (switch_on) { case 1: Test = new MultiSetSortedLinkedList(); break; case 2: Test = new MultiSetSortedArray(); break; default: switch_on = 0; Console.WriteLine("Nö\n"); break; } } void askMultiSetUnsorted() { interfaceTyp = "MultiSetUnsorted"; Console.WriteLine($"Welche Art von {interfaceTyp} möchten sie testen?"); Console.WriteLine("MultiSetUnsortedLinkedList --> 1"); Console.WriteLine("MultiSetUnSortedArray --> 2"); try { switch_on = Convert.ToInt32(ReadLine()); } catch (System.FormatException) { switch_on = 0; } switch (switch_on) { case 1: Test = new MultiSetUnsortedLinkedList(); break; case 2: Test = new MultiSetUnsortedArray(); break; default: switch_on = 0; Console.WriteLine("Nö\n"); break; } } void askSetSorted() { interfaceTyp = "SetSorted"; Console.WriteLine($"Welche Art von {interfaceTyp} möchten sie testen?"); Console.WriteLine("SetSortedLinkedList --> 1"); Console.WriteLine("SetSortedArray --> 2"); Console.WriteLine("BinSearchTree --> 3"); Console.WriteLine("Treap --> 4"); Console.WriteLine("AVL-Tree --> 5"); try { switch_on = Convert.ToInt32(ReadLine()); } catch (System.FormatException) { switch_on = 0; } switch (switch_on) { case 1: Test = new SetSortedLinkedList(); break; case 2: Test = new SetSortedArray(); break; case 3: Test = new BinSearchTree(); break; case 4: Test = new Treap(); break; case 5: Test = new AVLTree(); break; default: switch_on = 0; Console.WriteLine("Nö\n"); break; } } void askSetUnsorted() { interfaceTyp = "SetUnsorted"; Console.WriteLine($"Welche Art von {interfaceTyp} möchten sie testen?"); Console.WriteLine("SetUnsortedLinkedList --> 1"); Console.WriteLine("SetUnsortedArray --> 2"); Console.WriteLine("HashTabSepChain --> 3"); Console.WriteLine("HashTabQuadProb --> 4"); try { switch_on = Convert.ToInt32(ReadLine()); } catch (System.FormatException) { switch_on = 0; } switch (switch_on) { case 1: Test = new SetUnsortedLinkedList(); break; case 2: Test = new SetUnsortedArray(); break; case 3: Test = new HashTabSepChain(); break; case 4: Test = new HashTabQuadProb(); break; default: switch_on = 0; Console.WriteLine("Nö\n"); break; } } do { Console.WriteLine("Welchen Typ möchten Sie testen?"); Console.WriteLine("MultiSetSorted --> 1"); Console.WriteLine("MultiSetUnsorted --> 2"); Console.WriteLine("SetSorted --> 3"); Console.WriteLine("SetUnsorted --> 4"); try { switch_on = Convert.ToInt32(ReadLine()); } catch (System.FormatException) { switch_on = 0; } switch (switch_on) { case 1: askMultiSetSorted(); break; case 2: askMultiSetUnsorted(); break; case 3: askSetSorted(); break; case 4: askSetUnsorted(); break; default: switch_on = 0; Console.WriteLine("Nö\n"); break; } //OP-Ausführen if (switch_on != 0) { string eingabe = ""; do { string methode = ""; op operation = null; Console.WriteLine("Welche Operation soll es denn sein? ('0' zum ändern der Struktur)"); Console.WriteLine("Einfugen --> 1"); Console.WriteLine("Suchen --> 2"); Console.WriteLine("Loschen --> 3"); Console.WriteLine("Ausgeben --> 4"); try { switch_on = Convert.ToInt32(ReadLine()); } catch (System.FormatException) { switch_on = 50; } //OP_Switch switch (switch_on) { case 1: methode = "Einfügen"; operation = new op(Test.Insert); break; case 2: methode = "Suchen"; operation = new op(Test.Search); break; case 3: methode = "Löschen"; operation = new op(Test.Delete); break; case 4: Console.WriteLine(); Test.Print(); Console.WriteLine(); break; case 0: eingabe = "OP_switch"; break; default: Console.WriteLine("Nö\n"); break; } if (operation != null) { Console.WriteLine($"Geben sie die Zahlen zum {methode} ein (zum ändern der Operation '+' drücken)"); eingabe = ReadLine(); while (eingabe != "+") { try { Console.WriteLine(operation(Convert.ToInt32(eingabe))); } catch (FormatException) { Console.WriteLine("Nur Zahlen eingeben:"); } eingabe = ReadLine(); } } }while (eingabe != "OP_switch"); } }while (true); //Endlose wiederholung }