was neues
parent
6ea3a48474
commit
985ffab864
|
@ -3,14 +3,26 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void additerativ(int value) {
|
public int getHeight() {
|
||||||
|
return findTreeHeightRekursiv(root);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void additerativ(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
|
||||||
|
@ -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;
|
||||||
System.out.println();
|
|
||||||
temp = root;
|
return findMinRekursiv(temp.left);
|
||||||
System.out.println("Die Rechte Elemente: ");
|
}
|
||||||
while (temp != null) {
|
|
||||||
System.out.print(temp.value + " ");
|
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;
|
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);
|
||||||
// }
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 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);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue