was neues
parent
6ea3a48474
commit
985ffab864
|
@ -2,15 +2,27 @@ package BinaryTree;
|
|||
|
||||
public class BinaryBaumList {
|
||||
Node root;
|
||||
|
||||
public void addFirstElement(int value) {
|
||||
Node node = new Node(); //1. erstelle ein Node
|
||||
node.value = value; // 2. gib dieser Node ein Value
|
||||
|
||||
System.out.println("Erste Element: " + root.value);
|
||||
|
||||
private int findTreeHeightRekursiv(Node temp) {
|
||||
|
||||
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
|
||||
Node newNode = new Node();
|
||||
// setze in knote einen Wert
|
||||
|
@ -19,40 +31,42 @@ public class BinaryBaumList {
|
|||
newNode.left = null;
|
||||
// ersetze rechte Knote auf Null
|
||||
newNode.right = null;
|
||||
|
||||
// wenn meine Liste leer ist
|
||||
|
||||
// wenn meine Liste leer ist
|
||||
if (root == null) {
|
||||
this.root = newNode;
|
||||
return;
|
||||
}
|
||||
// Wenn sie nicht leer!
|
||||
|
||||
|
||||
// temp root, um einfacher zu suchen
|
||||
Node temp = root;
|
||||
// da mein Temp bis null Knote läuft,
|
||||
// speichere ich seinen vorhängieren Wert
|
||||
Node merker = temp;
|
||||
while(temp != null) {
|
||||
Node merker = temp;
|
||||
while (temp != null) {
|
||||
// speichere temp vorhängieren Wert
|
||||
merker = temp;
|
||||
// wenn soll ich die linke Seite betrachten
|
||||
if (value < temp.value)
|
||||
if (value < temp.value)
|
||||
temp = temp.left;
|
||||
|
||||
|
||||
// wenn nein soll ich die rechte Seite betrachten
|
||||
else
|
||||
temp = temp.right;
|
||||
else
|
||||
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
|
||||
if (value < merker.value)
|
||||
merker.left =newNode;
|
||||
if (value < merker.value)
|
||||
merker.left = newNode;
|
||||
// Wenn nein, Knote auf der rechte Seite einsetzen
|
||||
else
|
||||
merker.right =newNode;
|
||||
else
|
||||
merker.right = newNode;
|
||||
}
|
||||
|
||||
|
||||
private void addRekursiv(Node temp, int value) {
|
||||
|
||||
// erzeuge eine neue knote
|
||||
Node newNode = new Node();
|
||||
// setze in knote einen Wert
|
||||
|
@ -73,14 +87,14 @@ public class BinaryBaumList {
|
|||
if (temp.left == null) {
|
||||
// erstze die Knote
|
||||
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
|
||||
else {
|
||||
// laufe weiter
|
||||
addRekursiv(temp.left, value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// wenn die Value größer als die Root
|
||||
// also die rechte Seite betrachten
|
||||
|
@ -88,49 +102,72 @@ public class BinaryBaumList {
|
|||
if (temp.right == null) {
|
||||
// erstze die Knote
|
||||
temp.right = newNode;
|
||||
System.out.println("Rechte Knote: " +temp.right.value);
|
||||
System.out.println("Rechte Knote: " + temp.right.value);
|
||||
|
||||
} else {
|
||||
//laufe Weiter
|
||||
// laufe Weiter
|
||||
addRekursiv(temp.right, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void addElement(int value) {
|
||||
//additerativ(value);
|
||||
addRekursiv(root,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;
|
||||
// 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);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
private int findMinRekursiv(Node temp) {
|
||||
|
||||
if (temp.left == null)
|
||||
return temp.value;
|
||||
|
||||
return findMinRekursiv(temp.left);
|
||||
}
|
||||
|
||||
private int findMinIterativ(Node temp) {
|
||||
|
||||
while (temp.left != null)
|
||||
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;
|
||||
|
||||
return temp.value;
|
||||
}
|
||||
|
||||
public int findMax() {
|
||||
// Es gibt keine Elemente
|
||||
if (root == null)
|
||||
return -1;
|
||||
|
||||
// Wenn ja, dann hat root den Max Wert
|
||||
if (root.right == null)
|
||||
return root.value;
|
||||
|
||||
// return findMaxRekursiv(root);
|
||||
return findMaxIterativ(root);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -3,17 +3,15 @@ package BinaryTree;
|
|||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Node n1 = new Node();
|
||||
BinaryBaumList b1 = new BinaryBaumList();
|
||||
|
||||
b1.addElement(10);
|
||||
b1.addElement(15);
|
||||
b1.addElement(6);
|
||||
b1.addElement(3);
|
||||
b1.addElement(9);
|
||||
b1.addElement(20);
|
||||
b1.addElement(2);
|
||||
b1.addElement(1);
|
||||
b1.addElement(5);
|
||||
b1.addElement(22);
|
||||
b1.addElement(23);
|
||||
|
||||
System.out.println(b1.getHeight());
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue