was neues

master
obaya 2024-08-21 00:10:36 +02:00
parent 985ffab864
commit 5871e852a4
5 changed files with 98 additions and 11 deletions

View File

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

View File

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