From 985ffab86446b5c7375a21b961cdafe85af31b5c Mon Sep 17 00:00:00 2001 From: obaya Date: Tue, 20 Aug 2024 16:08:17 +0200 Subject: [PATCH] was neues --- .../src/BinaryTree/BinaryBaumList.java | 151 +++++++++++------- .../src/BinaryTree/JuintTeste.java | 23 +++ Programmierung2/src/BinaryTree/Test.java | 16 +- .../src/BinaryTree/Tree Data Structure.odt | Bin 2087238 -> 2086967 bytes 4 files changed, 124 insertions(+), 66 deletions(-) create mode 100644 Programmierung2/src/BinaryTree/JuintTeste.java diff --git a/Programmierung2/src/BinaryTree/BinaryBaumList.java b/Programmierung2/src/BinaryTree/BinaryBaumList.java index cc6026b..4a61904 100644 --- a/Programmierung2/src/BinaryTree/BinaryBaumList.java +++ b/Programmierung2/src/BinaryTree/BinaryBaumList.java @@ -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); + } } diff --git a/Programmierung2/src/BinaryTree/JuintTeste.java b/Programmierung2/src/BinaryTree/JuintTeste.java new file mode 100644 index 0000000..9161ad8 --- /dev/null +++ b/Programmierung2/src/BinaryTree/JuintTeste.java @@ -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); + + } + +} diff --git a/Programmierung2/src/BinaryTree/Test.java b/Programmierung2/src/BinaryTree/Test.java index 9434601..b084a7a 100644 --- a/Programmierung2/src/BinaryTree/Test.java +++ b/Programmierung2/src/BinaryTree/Test.java @@ -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()); + + } diff --git a/Programmierung2/src/BinaryTree/Tree Data Structure.odt b/Programmierung2/src/BinaryTree/Tree Data Structure.odt index 9efc4d783327b45873400fcd686d4c5d823ef459..50c2ccabae65db20f177ee25289ca1bbac09e3fa 100644 GIT binary patch delta 13455 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