Baum

H

habkeinen

Gast
Java:
package aufgabenblatt3_aufgabe_35;

/**
 * Knoten eines binären Baums mit einem int-Wert als "Nutzinformation"
 */
public class TreeNode {
    public TreeNode left;
    public int info;
    public TreeNode right;
    
    /** erzeugt Knoten mit angegebenem Wert und linkem sowie rechtem
     *  Teilbaum
     */
    public TreeNode(int v, TreeNode l, TreeNode r) {
        info = v;
        left = l;
        right = r;
    }

    /** erzeugt Blatt mit angegebenem Wert */
    public TreeNode(int v) {
        info = v;
        left = null;
        right = null;
    }
    
    public boolean istBlatt() {
        return left == null && right == null;
    }
}


Java:
package aufgabenblatt3_aufgabe_35;

import java.util.*;

/**
 * Implementierung eines binären Suchbaums
 * (Methoden siehe Aufgabenblatt sind noch zu ergänzen)
 */
public class SearchTree {

	private TreeNode root;

	/** Konstruktor erzeugt leeren Baum */
	public SearchTree() {
		root = null;
	}

	/** Berechnet die Höhe eines Baums */
	public int height() {
		return height(root);
	}

	private static int height(TreeNode r) {
		if (r == null)
			return 0;
		else
			return 1 + Math.max(height(r.left), height(r.right));
	}

	/**
	 * fügt neuen Knoten mit Wert v (falls v noch nicht vorhanden) in den Baum
	 * ein
	 */
	public boolean insert(int v) {
		if (root == null) {
			root = new TreeNode(v);
			return true; // erfolgreich eingefügt
		} else {
			return insertRek(root, v);
		}
	}

	private boolean insertRek(TreeNode r, int v) {
		if (v < r.info) {
			if (r.left == null) {
				r.left = new TreeNode(v);
				return true;
			} else {
				return insertRek(r.left, v);
			}
		} else if (v > r.info) {
			if (r.right == null) {
				r.right = new TreeNode(v);
				return true;
			} else {
				return insertRek(r.right, v);
			}
		} else
			// (v == r.info)
			return false; // Wert war bereits vorhanden

	}

	/**
	 * sucht im Baum nach dem Knoten mit dem Wert v
	 * 
	 * @return Referenz auf Knoten, falls Suche erfolgreich und null-Referenz
	 *         sonst
	 */
	public TreeNode searchNode(int v) {
		TreeNode current = root;
		while (current != null) {
			if (v < current.info)
				current = current.left; // im linken Teilbaum weitersuchen
			else if (v > current.info)
				current = current.right; // im rechten Teilbaum weitersuchen
			else // if (v == current.value)
				return current; // Knoten mit Wert gefunden
		}
		return null; // Wert nicht gefunden
	}

	/** Gibt den Baum "liegend" aus */
	public void print() {
		if (root != null) {
			print(root.left, "    ", true);
			System.out.println("+---" + root.info);
			print(root.right, "    ", false);
		}
	}

	public void print(TreeNode r, String prefix, boolean links) {
		if (r != null) {
			if (links)
				print(r.left, prefix + "    ", links);
			else
				print(r.left, prefix + "|   ", !links);

			System.out.println(prefix + "+---" + r.info);

			if (links)
				print(r.right, prefix + "|   ", !links);
			else
				print(r.right, prefix + "    ", links);

		}
	}

	//====================================================================//
	// hier sind die Methoden zu ergänzen 
	//====================================================================//	
	
	/** Bestimmt die Anzahl der Werte, die im Baum gespeichert sind. 
	 *  (= Anzahl der Knoten im Baum) */
	public int size() {	

	a=root.info;
	TreeNode b =root.left;
	int c=1;
	if(root.left!=null){
		c+=size();
	}
	if(root.right != null){
		c+=size();
	}
		return c;
	}
	/*int links=0;
	int rechts=0;
	int size=1;
		TreeNode a = root.left;
		TreeNode b =root.right;
		
		while(links<a.info){
			links++;
		}
		while(rechts<b.info){
			rechts++;
		}
		
		size=links+rechts;
		return size;
		*/
		/*
			if(root == null){
				return 0;
			
			}else{
				int anzahl =1;
				
				while(anzahl<a.info){
					anzahl++;
					//return anzahl;
				}
				
				return anzahl;
		*/
				/*
				
				int i;
				
				for(anzahl=1;anzahl<a.info;anzahl++){
					
					if(a.right==null){
						anzahl=anzahl+0;
					}else{
						anzahl++;;
					}
					if(a.left==null){
						anzahl=anzahl+0;
					}else{
						anzahl++;
					}
					
				return anzahl;
				}
				
				
			//	return 0;
*/
			//}
			
			
			
		
		
	//}

	
	/** Bestimmt die Summe aller Werte, die im Baum gespeichert sind. */
	public int sum() {
		return 0;
	}

	public ArrayList<Integer> toList() {
		return null;
		
	}

	public void toList(TreeNode t, ArrayList<Integer> result) {
	}

	
	/**
	 * Bestimmt den Knoten mit dem kleinsten Wert. Liefert 'null', falls Baum
	 * gar keine Knoten enthält.
	 */
	public TreeNode minNode() {
		return root;
	}

	/**
	 * Fügt iterativ (!) einen neuen Knoten mit Wert v (falls v noch nicht
	 * enthalten ist) in den Baum ein. Liefert false, falls Wert schon im Baum
	 * enthalten war und sonst true.
	 */
	public boolean insertIter(int v) {
		return false;
	}


	/** prüft, ob der andere Baum die gleiche Menge von Elementen enthält */
	public boolean equals(SearchTree other) {
		return false;
		
	}
	
}

bei public int size{...}
da sollen wir die anzhal knoten zählen im baum
mir geht es hier auch net um die lösung das ihr das für mich macht,
aber ich komm da partout nicht weiter und morgen ist abgabe.
kann mir da jemand helfen=
 

Andi_CH

Top Contributor
Das geht am Besten Rekursiv

Jeder Tree im TreeNode impementierst du eine Methode

Java:
public int nrOfnodes() {
    return 1 + left.nrOfnodes() + right.nrOfnodes();
}

Was du machen musst um NullPointerExceptions zu vermeiden musst du selbst herausfinden.
ne ne - catch ist hier wohl nicht die richtige Idee

Ach der Klasse SearchTree wird einfach

Java:
return root.nrOfnodes();

gemacht. Tja, auch hier kann es eine NullPointerException geben welche du verhindern solltest.

Ach und ob Blätter auch Knoten sind weiss ich nicht, aber das würde nicht sehr viel ändern :)
 

Andi_CH

Top Contributor
Knoten zählen ist eine 15 Minuten Aufgabe - mehr braucht das nicht.

Wenn das für die eine lange Nacht ist, möhte ich wissen was eine Kurze ist :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
G AVL-Baum Java Basics - Anfänger-Themen 1
G Rot-Schwarz-Baum Java Basics - Anfänger-Themen 8
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Interface Baum visualisieren Java Basics - Anfänger-Themen 37
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Baum pfadweise durchlaufen Java Basics - Anfänger-Themen 11
O Naives links rechts einfügen in ADT Baum Java Basics - Anfänger-Themen 8
L Traversierungsverfahren Baum: LevelOrder Java Basics - Anfänger-Themen 17
L Rekursion im Baum Java Basics - Anfänger-Themen 9
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Binären Baum Kinder setzen Java Basics - Anfänger-Themen 12
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 4
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 0
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
R Baum erzeugen Java Basics - Anfänger-Themen 61
B Baum Traversierung Postorder Java Basics - Anfänger-Themen 6
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
A Voller Baum Java Basics - Anfänger-Themen 7
S n-ärer Baum Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
C kompletter baum Java Basics - Anfänger-Themen 2
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
M Baum Code kurze frage ... Java Basics - Anfänger-Themen 6
D Ein Objekt in einem Baum finden und ausgeben. Java Basics - Anfänger-Themen 4
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
A min() Methode Baum Java Basics - Anfänger-Themen 1
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
Screen 2,4 Baum Frage Java Basics - Anfänger-Themen 6
T Rot-schwarz Baum Problem Java Basics - Anfänger-Themen 3
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
C 2-3 Baum Java Basics - Anfänger-Themen 6
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
L eigenen Baum schreiben Java Basics - Anfänger-Themen 5
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
T Array in einen Baum zu überführen Java Basics - Anfänger-Themen 3
S Das reinschreiben einer Klasse in den Baum Java Basics - Anfänger-Themen 6
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
A Baum mit geometricfigur Werte Java Basics - Anfänger-Themen 6
D Datentypen Einfügen im RotSchwarz Baum Java Basics - Anfänger-Themen 2
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
I Baum graphisch darstellen Java Basics - Anfänger-Themen 2
P Binärer Baum mit Composite-Entwurfsmuster Java Basics - Anfänger-Themen 2
L Baum Swing AVL Java Basics - Anfänger-Themen 4
Binary.Coder 2-3-4 Baum vs. (2,4) Baum Java Basics - Anfänger-Themen 2
ModellbahnerTT Ab-Baum Applet Java Basics - Anfänger-Themen 3
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
H Baum Java Basics - Anfänger-Themen 11
G AVL Baum Java Basics - Anfänger-Themen 20
J Baum spiegeln Java Basics - Anfänger-Themen 7
N 2-3 Baum, Einfügen Java Basics - Anfänger-Themen 5
G Rekursion mit Return - Baum durchlaufen Java Basics - Anfänger-Themen 4
G Baum Datenstruktur Java Basics - Anfänger-Themen 2
V Baum mit log n Aufwand für Einfügen und Löschen und. Java Basics - Anfänger-Themen 5
H Tiefensuche im binären Baum Java Basics - Anfänger-Themen 2
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
G Binärer Baum Java Basics - Anfänger-Themen 3
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
G universeller baum Java Basics - Anfänger-Themen 13
G Baum testen Java Basics - Anfänger-Themen 20
B Array To Baum Java Basics - Anfänger-Themen 2
B Baum to Array Java Basics - Anfänger-Themen 17
H Löschen in einem binären Baum führt zu einem StackOverflow Java Basics - Anfänger-Themen 2
L Binären Baum speichern Java Basics - Anfänger-Themen 6
R Pythagoras-Baum Java Basics - Anfänger-Themen 5
W Baum durchlaufen Java Basics - Anfänger-Themen 3
T binärer Baum Java Basics - Anfänger-Themen 3
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
P allg. Baum aus Liste Java Basics - Anfänger-Themen 2
J String in binären Baum umwandeln Java Basics - Anfänger-Themen 7
R binärer Baum Java Basics - Anfänger-Themen 2
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben