was neues

master
obaya 2024-08-20 16:08:17 +02:00
parent 6ea3a48474
commit 985ffab864
4 changed files with 124 additions and 66 deletions

View File

@ -3,13 +3,25 @@ package BinaryTree;
public class BinaryBaumList { public class BinaryBaumList {
Node root; Node root;
public void addFirstElement(int value) { private int findTreeHeightRekursiv(Node temp) {
Node node = new Node(); //1. erstelle ein Node
node.value = value; // 2. gib dieser Node ein Value
System.out.println("Erste Element: " + root.value); if (temp == null)
return -1;
int left_subTree = findTreeHeightRekursiv(temp.left);
int right_subTree = findTreeHeightRekursiv(temp.right);
if (left_subTree > right_subTree)
return 1 + left_subTree;
return 1 + right_subTree;
} }
public int getHeight() {
return findTreeHeightRekursiv(root);
}
private void additerativ(int value) { private void additerativ(int value) {
// erzeuge eine neue knote // erzeuge eine neue knote
Node newNode = new Node(); Node newNode = new Node();
@ -32,7 +44,7 @@ public class BinaryBaumList {
// da mein Temp bis null Knote läuft, // da mein Temp bis null Knote läuft,
// speichere ich seinen vorhängieren Wert // speichere ich seinen vorhängieren Wert
Node merker = temp; Node merker = temp;
while(temp != null) { while (temp != null) {
// speichere temp vorhängieren Wert // speichere temp vorhängieren Wert
merker = temp; merker = temp;
// wenn soll ich die linke Seite betrachten // wenn soll ich die linke Seite betrachten
@ -43,16 +55,18 @@ public class BinaryBaumList {
else else
temp = temp.right; temp = temp.right;
} }
// so wenn ich ganz unten bin, soll ich sehen, ob ich die Knote rechts oder linke einsetzen soll // 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 // Wenn ja, Knote auf der Linke Seite einsetzen
if (value < merker.value) if (value < merker.value)
merker.left =newNode; merker.left = newNode;
// Wenn nein, Knote auf der rechte Seite einsetzen // Wenn nein, Knote auf der rechte Seite einsetzen
else else
merker.right =newNode; merker.right = newNode;
} }
private void addRekursiv(Node temp, int value) { private void addRekursiv(Node temp, int value) {
// erzeuge eine neue knote // erzeuge eine neue knote
Node newNode = new Node(); Node newNode = new Node();
// setze in knote einen Wert // setze in knote einen Wert
@ -73,7 +87,7 @@ public class BinaryBaumList {
if (temp.left == null) { if (temp.left == null) {
// erstze die Knote // erstze die Knote
temp.left = newNode; temp.left = newNode;
System.out.println("Linke Knote: " +temp.left.value); System.out.println("Linke Knote: " + temp.left.value);
} }
// wenn mein Temp die Knote null nicht erreicht hat // wenn mein Temp die Knote null nicht erreicht hat
else { else {
@ -88,49 +102,72 @@ public class BinaryBaumList {
if (temp.right == null) { if (temp.right == null) {
// erstze die Knote // erstze die Knote
temp.right = newNode; temp.right = newNode;
System.out.println("Rechte Knote: " +temp.right.value); System.out.println("Rechte Knote: " + temp.right.value);
} else { } else {
//laufe Weiter // laufe Weiter
addRekursiv(temp.right, value); addRekursiv(temp.right, value);
} }
} }
} }
public void addElement(int value) { public void addElement(int value) {
//additerativ(value); // additerativ(value);
addRekursiv(root,value); addRekursiv(root, value);
} }
public void printRoot() {
Node temp = root;
System.out.println("Die Linke Elemente: ");
while(temp != null) { private int findMinRekursiv(Node temp) {
System.out.print(temp.value + " ");
temp =temp.left; if (temp.left == null)
return temp.value;
return findMinRekursiv(temp.left);
} }
System.out.println();
temp = root; private int findMinIterativ(Node temp) {
System.out.println("Die Rechte Elemente: ");
while (temp != null) { while (temp.left != null)
System.out.print(temp.value + " "); temp = temp.left;
return temp.value;
}
public int findMin() {
return findMinRekursiv(root);
// return findMinIterativ(root);
}
private int findMaxRekursiv(Node temp) {
// // Wenn es kein rechtes Kind gibt, ist dies das Maximum
if (temp.right == null)
return temp.value;
// Rekursiv weiter nach rechts gehen
return findMaxRekursiv(temp.right);
}
private int findMaxIterativ(Node temp) {
while (temp.right != null)
temp = temp.right; temp = temp.right;
}
return temp.value;
} }
// public void preorder() { public int findMax() {
// Node temp = root; // Es gibt keine Elemente
// if (temp != null) if (root == null)
// System.out.println(temp.value); return -1;
// temp = temp.
// while (temp.left != null || temp.right != null) { // Wenn ja, dann hat root den Max Wert
// if (temp.left != null) { if (root.right == null)
// temp = temp.left; return root.value;
// System.out.println(temp.value);
// } // return findMaxRekursiv(root);
// } return findMaxIterativ(root);
// } }
} }

View File

@ -0,0 +1,23 @@
package BinaryTree;
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class JuintTeste {
@Test
void test() {
BinaryBaumList b1 = new BinaryBaumList();
b1.addElement(15);
b1.addElement(6);
b1.addElement(3);
b1.addElement(9);
b1.addElement(8);
b1.addElement(20);
b1.addElement(25);
}
}

View File

@ -3,17 +3,15 @@ package BinaryTree;
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
Node n1 = new Node();
BinaryBaumList b1 = new BinaryBaumList(); BinaryBaumList b1 = new BinaryBaumList();
b1.addElement(15);
b1.addElement(10); b1.addElement(6);
b1.addElement(3);
b1.addElement(9); b1.addElement(9);
b1.addElement(20);
b1.addElement(2); System.out.println(b1.getHeight());
b1.addElement(1);
b1.addElement(5);
b1.addElement(22);
b1.addElement(23);
} }