was neues
parent
985ffab864
commit
5871e852a4
|
@ -1,10 +1,15 @@
|
|||
package BinaryTree;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
|
||||
public class BinaryBaumList {
|
||||
Node root;
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
private int findTreeHeightRekursiv(Node temp) {
|
||||
|
||||
if (temp == null)
|
||||
return -1;
|
||||
|
||||
|
@ -21,7 +26,7 @@ public class BinaryBaumList {
|
|||
return findTreeHeightRekursiv(root);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
private void additerativ(int value) {
|
||||
// erzeuge eine neue knote
|
||||
Node newNode = new Node();
|
||||
|
@ -117,7 +122,7 @@ public class BinaryBaumList {
|
|||
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------
|
||||
private int findMinRekursiv(Node temp) {
|
||||
|
||||
if (temp.left == null)
|
||||
|
@ -138,9 +143,9 @@ public class BinaryBaumList {
|
|||
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)
|
||||
|
@ -170,4 +175,83 @@ public class BinaryBaumList {
|
|||
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,12 +8,15 @@ public class Test {
|
|||
b1.addElement(6);
|
||||
b1.addElement(3);
|
||||
b1.addElement(9);
|
||||
b1.addElement(8);
|
||||
b1.addElement(20);
|
||||
b1.addElement(25);
|
||||
|
||||
|
||||
System.out.println(b1.getHeight());
|
||||
|
||||
|
||||
|
||||
|
||||
System.out.print("[ ");
|
||||
b1.printDepth();
|
||||
System.out.print(" ]");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue