was neues
parent
985ffab864
commit
5871e852a4
|
@ -1,10 +1,15 @@
|
||||||
package BinaryTree;
|
package BinaryTree;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.Queue;
|
||||||
|
|
||||||
public class BinaryBaumList {
|
public class BinaryBaumList {
|
||||||
Node root;
|
Node root;
|
||||||
|
|
||||||
private int findTreeHeightRekursiv(Node temp) {
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
private int findTreeHeightRekursiv(Node temp) {
|
||||||
if (temp == null)
|
if (temp == null)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -21,7 +26,7 @@ public class BinaryBaumList {
|
||||||
return findTreeHeightRekursiv(root);
|
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();
|
||||||
|
@ -117,7 +122,7 @@ public class BinaryBaumList {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------
|
||||||
private int findMinRekursiv(Node temp) {
|
private int findMinRekursiv(Node temp) {
|
||||||
|
|
||||||
if (temp.left == null)
|
if (temp.left == null)
|
||||||
|
@ -138,9 +143,9 @@ public class BinaryBaumList {
|
||||||
return findMinRekursiv(root);
|
return findMinRekursiv(root);
|
||||||
// return findMinIterativ(root);
|
// return findMinIterativ(root);
|
||||||
}
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
private int findMaxRekursiv(Node temp) {
|
private int findMaxRekursiv(Node temp) {
|
||||||
// // Wenn es kein rechtes Kind gibt, ist dies das Maximum
|
// // Wenn es kein rechtes Kind gibt, ist dies das Maximum
|
||||||
if (temp.right == null)
|
if (temp.right == null)
|
||||||
|
@ -170,4 +175,83 @@ public class BinaryBaumList {
|
||||||
return findMaxIterativ(root);
|
return findMaxIterativ(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
private void printPreorder(Node temp) {//[root][left][right]
|
||||||
|
if (temp == null)
|
||||||
|
return;
|
||||||
|
System.out.print( temp.value+ " " );
|
||||||
|
printPreorder(temp.left);
|
||||||
|
printPreorder(temp.right);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printInorder(Node temp) {//[left][root][right]
|
||||||
|
if (temp == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
printInorder(temp.left);
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
printInorder(temp.right);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printPostoder(Node temp) {//[left][right][root]
|
||||||
|
if (temp == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
printPreorder(temp.left);
|
||||||
|
printPreorder(temp.right);
|
||||||
|
System.out.print( temp.value+ " " );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BreadthFirst() {
|
||||||
|
// Erstelle eine Queue (Warteschlange) vom Typ LinkedList, um die Knoten für die
|
||||||
|
// Level-Order Traversal zu speichern.
|
||||||
|
Queue<Node> q1 = new LinkedList<>();
|
||||||
|
|
||||||
|
// Füge den Wurzelknoten des Baums in die Warteschlange ein.
|
||||||
|
// Dies ist der Startpunkt für die Breadth-First Traversal.
|
||||||
|
q1.add(root);
|
||||||
|
|
||||||
|
// Solange die Warteschlange nicht leer ist, gibt es noch Knoten zu besuchen.
|
||||||
|
while (!q1.isEmpty()) {
|
||||||
|
// Schau dir das erste Element in der Warteschlange an, ohne es zu entfernen.
|
||||||
|
// Dies gibt dir den aktuellen Knoten, den du verarbeiten willst.
|
||||||
|
Node temp = q1.peek();
|
||||||
|
|
||||||
|
// Entferne das Element (den Knoten), das gerade verarbeitet wird, aus der
|
||||||
|
// Warteschlange.
|
||||||
|
// Dies verschiebt die Warteschlange und macht den nächsten Knoten zum
|
||||||
|
// "Front"-Element.
|
||||||
|
q1.remove();
|
||||||
|
|
||||||
|
// Gib den Wert des aktuellen Knotens aus, den du gerade bearbeitest.
|
||||||
|
// Dies ist der eigentliche Schritt, bei dem du die Traversal-Ergebnisse
|
||||||
|
// ausgibst.
|
||||||
|
System.out.print(temp.value + " ");
|
||||||
|
|
||||||
|
// Wenn der linke Kindknoten existiert, füge ihn zur Warteschlange hinzu.
|
||||||
|
// Dies stellt sicher, dass der linke Kindknoten später in der richtigen
|
||||||
|
// Reihenfolge bearbeitet wird.
|
||||||
|
if (temp.left != null)
|
||||||
|
q1.add(temp.left);
|
||||||
|
|
||||||
|
// Wenn der rechte Kindknoten existiert, füge ihn ebenfalls zur Warteschlange
|
||||||
|
// hinzu.
|
||||||
|
// Dies stellt sicher, dass der rechte Kindknoten nach dem linken Kindknoten
|
||||||
|
// bearbeitet wird.
|
||||||
|
if (temp.right != null)
|
||||||
|
q1.add(temp.right);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void printDepth() {
|
||||||
|
//printPreorder(root);
|
||||||
|
//printInorder(root);
|
||||||
|
BreadthFirst();
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
|
@ -8,11 +8,14 @@ public class Test {
|
||||||
b1.addElement(6);
|
b1.addElement(6);
|
||||||
b1.addElement(3);
|
b1.addElement(3);
|
||||||
b1.addElement(9);
|
b1.addElement(9);
|
||||||
|
b1.addElement(8);
|
||||||
System.out.println(b1.getHeight());
|
b1.addElement(20);
|
||||||
|
b1.addElement(25);
|
||||||
|
|
||||||
|
|
||||||
|
System.out.print("[ ");
|
||||||
|
b1.printDepth();
|
||||||
|
System.out.print(" ]");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue