diff --git a/Programmierung2/src/BinaryTree/BinaryBaumList.java b/Programmierung2/src/BinaryTree/BinaryBaumList.java index 8d88007..cc6026b 100644 --- a/Programmierung2/src/BinaryTree/BinaryBaumList.java +++ b/Programmierung2/src/BinaryTree/BinaryBaumList.java @@ -6,75 +6,131 @@ public class BinaryBaumList { public void addFirstElement(int value) { Node node = new Node(); //1. erstelle ein Node node.value = value; // 2. gib dieser Node ein Value - if (root == null)//3. wenn meine Liste leer ist - this.root = node; + System.out.println("Erste Element: " + root.value); } - private void HinzufügenVonElementen(int value) { - Node newNode = new Node(); - newNode.value = value; - Node temp = root; - Node merker = temp; - while(temp != null) { - merker = temp; - if (value < temp.value) - temp = temp.left; - - else - temp = temp.right; - } - if (value < merker.value) { - merker.left =newNode; - System.out.println("linke neue Knote " + merker.left.value); - }else { - merker.right =newNode; - System.out.println("rechte neue Knote " + root.right.value); - } - - } - - public void addElement(int value) { - if (root == null) - addFirstElement(value); - else - HinzufügenVonElementen(value); - - } - - - public void addstatic(int value) { + private void additerativ(int value) { + // erzeuge eine neue knote Node newNode = new Node(); + // setze in knote einen Wert newNode.value = value; + // ersetze left Knote auf Null + newNode.left = null; + // ersetze rechte Knote auf Null + newNode.right = null; + // wenn meine Liste leer ist if (root == null) { this.root = newNode; return; } + // Wenn sie nicht leer! - //wenn ja, dann soll ich nur die linke Knoten des Baumes betrachte + // temp root, um einfacher zu suchen Node temp = root; - if (newNode.value < root.value) { - root.left = newNode; - System.out.println("linke seite " + root.left.value); - } - - else { - root.right = newNode; - System.out.println("rechte seite " + root.right.value); + // da mein Temp bis null Knote läuft, + // speichere ich seinen vorhängieren Wert + Node merker = temp; + while(temp != null) { + // speichere temp vorhängieren Wert + merker = temp; + // wenn soll ich die linke Seite betrachten + if (value < temp.value) + temp = temp.left; + + // wenn nein soll ich die rechte Seite betrachten + else + temp = temp.right; } - + // so wenn ich ganz unten bin, soll ich sehen, ob ich die Knote rechts oder linke einsetzen soll + // Wenn ja, Knote auf der Linke Seite einsetzen + if (value < merker.value) + merker.left =newNode; + // Wenn nein, Knote auf der rechte Seite einsetzen + else + merker.right =newNode; } -// public void printRoot() { + private void addRekursiv(Node temp, int value) { + // erzeuge eine neue knote + Node newNode = new Node(); + // setze in knote einen Wert + newNode.value = value; + // ersetze left Knote auf Null + newNode.left = null; + // ersetze rechte Knote auf Null + newNode.right = null; + // falls die Liste leer ist! + if (temp == null) { + root = newNode; + System.out.println("Die Root: " + root.value); + return; + } + // Wenn ja die Linke Seite betrachten + if (value < temp.value) { + // Wenn mein temp die die Knote null erreicht + if (temp.left == null) { + // erstze die Knote + temp.left = newNode; + System.out.println("Linke Knote: " +temp.left.value); + } + // wenn mein Temp die Knote null nicht erreicht hat + else { + // laufe weiter + addRekursiv(temp.left, value); + } + + } + // wenn die Value größer als die Root + // also die rechte Seite betrachten + else { + if (temp.right == null) { + // erstze die Knote + temp.right = newNode; + System.out.println("Rechte Knote: " +temp.right.value); + + } else { + //laufe Weiter + addRekursiv(temp.right, value); + } + } + } + + public void addElement(int value) { + //additerativ(value); + addRekursiv(root,value); + + } + + public void printRoot() { + Node temp = root; + System.out.println("Die Linke Elemente: "); + + while(temp != null) { + System.out.print(temp.value + " "); + temp =temp.left; + } + System.out.println(); + temp = root; + System.out.println("Die Rechte Elemente: "); + while (temp != null) { + System.out.print(temp.value + " "); + temp = temp.right; + } + } + +// public void preorder() { // Node temp = root; -// Node left = root.left; -// Node right = root.right; -// -// while(temp != null || left != null || right != null) -// System.out.println("Value: " + this.root.value); +// if (temp != null) +// System.out.println(temp.value); +// temp = temp. +// while (temp.left != null || temp.right != null) { +// if (temp.left != null) { +// temp = temp.left; +// System.out.println(temp.value); +// } +// } // } - - } diff --git a/Programmierung2/src/BinaryTree/Test.java b/Programmierung2/src/BinaryTree/Test.java index 0b516a9..9434601 100644 --- a/Programmierung2/src/BinaryTree/Test.java +++ b/Programmierung2/src/BinaryTree/Test.java @@ -6,14 +6,18 @@ public class Test { Node n1 = new Node(); BinaryBaumList b1 = new BinaryBaumList(); - b1.addFirstElement(10); - b1.addElement(7); + b1.addElement(10); + b1.addElement(9); b1.addElement(20); - b1.addElement(-2); b1.addElement(2); b1.addElement(1); + b1.addElement(5); + b1.addElement(22); + b1.addElement(23); + -// b1.printRoot(); } + + } diff --git a/Programmierung2/src/BinaryTree/Tree Data Structure.odt b/Programmierung2/src/BinaryTree/Tree Data Structure.odt index c54272e..9efc4d7 100644 Binary files a/Programmierung2/src/BinaryTree/Tree Data Structure.odt and b/Programmierung2/src/BinaryTree/Tree Data Structure.odt differ