master
obaya 2024-08-19 23:48:25 +02:00
parent e1934b49f2
commit 6ea3a48474
3 changed files with 117 additions and 57 deletions

View File

@ -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) {
private void additerativ(int value) {
// erzeuge eine neue knote
Node newNode = new Node();
// setze in knote einen Wert
newNode.value = value;
Node temp = root;
Node merker = temp;
while(temp != null) {
merker = temp;
if (value < temp.value)
temp = temp.left;
// ersetze left Knote auf Null
newNode.left = null;
// ersetze rechte Knote auf Null
newNode.right = null;
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) {
Node newNode = new Node();
newNode.value = value;
// 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);
}
// 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;
else {
root.right = newNode;
System.out.println("rechte seite " + root.right.value);
// 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;
}
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() {
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);
// }
// }
// }
}

View File

@ -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();
}
}