Binärbaum

sh33p

Bekanntes Mitglied
ich möchte einen Binärbaum programmieren.
Ich habe folgende Klasse geschrieben:

Java:
public class BinaryNode {
     private BinaryNode father, leftSon, rightSon;
     private int value;

     public BinaryNode(int i) {
       father = leftSon = rightSon = null;
       value = i;
     }
     public void insert(int wert){
       if(father == null){        // Vater hat keine Nachfolger.  Ein elementiger Baum
         father = leftSon;
         father.value = wert;
       }
     }


}

wie füge ich nun einen neuen Wert ein,wenn es bereits nachfolger gibt?
 

Andi_CH

Top Contributor
Irgendwie fehlt mir die Information wo du einfügen willst - an welcher Stelle?
Oder willst du einfach unten an der ersten freien Stelle anhängen? Das brächte dann irgendwie Backtracking um die zu finden.
 

sh33p

Bekanntes Mitglied
ok dann machen wirs so,wenn die zahl kleiner ist wie der Vater, dann soll sie in den linke teilbaum (linker sohn) eingefügt werden).ist sie größer,dann in den rechten
 

Der Müde Joe

Top Contributor
Das ganze sollte dann natürlich auch vom root her in die tiefe gehen. Sprich
solange es links rein muss und einen linken gibt, eins tiefer in die tiefe.
 

Michael...

Top Contributor
Deine Logik in insert habe ich nicht verstanden. Wenn kein father, dann wird leftSon zum father? Was sind denn das für Familienverhältnisse? ;-)
Aber bräuchtest Du nicht erstmal eine Methode
Code:
public void insert(BinaryNode node)
in der Du entsprechende Prüfungen vornimmst?
bzw. wenn Du Deine insert-Methode behalten willst würde ich die eher so deklarieren:
Code:
public BinaryNode insert(int i)
 

Der Müde Joe

Top Contributor
Ein bsp könnte zb so aussehen:
Java:
public void insert(T data) {
	root =  insert(data, root);
}

private Node<T> insert(T data, Node<T> node) {
	if(node == null) {
		node = new Node<T>(data);
	} else {
		if(data.compareTo(node.data) <= 0) {
			node.left = insert(data, node.left);
		} else {
			node.right = insert(data, node.right);
		}
	}
	return node;
}

EDIT: mit der Node
Java:
private static class Node<T> {
	
	private final T data;
	private Node<T> left;
	private Node<T> right;
	
	public Node(T data) {
		this.data = data;
	}
}
 

Andi_CH

Top Contributor
Java:
public class BinaryNode {
	private BinaryNode father, leftSon, rightSon;
	private int value;

	public BinaryNode(int i) {
		father = leftSon = rightSon = null;
		value = i;
	}

	public void insert(BinaryNode node) {
		if (node.value == this.value)
			throw new IllegalArgumentException();
		if (node.value < this.value) {
			// links einfügen
			if (leftSon==null) {
// Ja hier muss man was tun
			} else {
// und hier auch
			}
		} else {
			// rehts einfügen
			if (rightSon==null) {
// und hier auch
			} else {
// und hier auch
			}
		}
	}

	public String toString() {
		String retVal = "";
		if (leftSon!=null)
			retVal += leftSon;
		retVal += this.value + " ";
		if (rightSon != null)
			retVal += rightSon;
		return retVal;
	}
}

Java:
public class TreeTest {

	public static void main(String[] args) {
		BinaryNode root = null;
		root = new BinaryNode(5);
		System.out.println(root);
		root.insert(new BinaryNode(3));
		System.out.println(root);
		root.insert(new BinaryNode(2));
		System.out.println(root);
		root.insert(new BinaryNode(6));
		System.out.println(root);
		root.insert(new BinaryNode(4));
		System.out.println(root);
	}
}

Output:
Code:
5 
3 5 
2 3 5 
2 3 5 6 
2 3 4 5 6
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
E Erste Schritte Testklasse Binärbaum Java Basics - Anfänger-Themen 10
void19 Methoden Binärbaum Inorder Traversierung in Array speichern Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
L Ganzen BinärBaum ausgeben? Java Basics - Anfänger-Themen 3
L Binärbaum (Stammbaum) Java Basics - Anfänger-Themen 8
S Binärbaum in PreOrder in ArrayList speichern Java Basics - Anfänger-Themen 0
J Methoden Binärbaum, Traversierung in Array speichern Java Basics - Anfänger-Themen 18
K BinärBaum Java Basics - Anfänger-Themen 4
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
C Binärbaum mit grafischer Ausgabe Java Basics - Anfänger-Themen 0
J Binärbaum formatiert ausgeben. Java Basics - Anfänger-Themen 7
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
M Binärbaum mit parent-Zeigern Java Basics - Anfänger-Themen 1
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
D Binärbaum Suche Java Basics - Anfänger-Themen 5
D Binärbaum probleme Java Basics - Anfänger-Themen 4
P Binärbaum - Primärschlüssel Java Basics - Anfänger-Themen 3
X Fehler Binärbaum Java Basics - Anfänger-Themen 6
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
P Binärbaum Ordnungsproblem Java Basics - Anfänger-Themen 8
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
S Variable Parameterliste in Binärbaum Java Basics - Anfänger-Themen 2
N BinärBaum Hilfestellung Java Basics - Anfänger-Themen 8
S Binärbaum prüfen, ob sortiert oder unsortiert Java Basics - Anfänger-Themen 6
W Binärbaum zahlen addieren Java Basics - Anfänger-Themen 7
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
S Binärbaum Java Basics - Anfänger-Themen 7
I Binärbaum Java Basics - Anfänger-Themen 5
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
J Binärbaum getSize Java Basics - Anfänger-Themen 4
P Fragen zum Binärbaum Java Basics - Anfänger-Themen 3
S Binärbaum implementieren Java Basics - Anfänger-Themen 6
K Tiefe im Binärbaum Java Basics - Anfänger-Themen 2
G generischer binärbaum Java Basics - Anfänger-Themen 9
G Binärbaum und Wrapperklassen Java Basics - Anfänger-Themen 6
F Binärbaum codieren. Codeproblem! Java Basics - Anfänger-Themen 4
D rekursion im binärbaum Java Basics - Anfänger-Themen 11
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
B Binärbaum auf Vollständigkeit prüfen Java Basics - Anfänger-Themen 15
G Frage zur einfügen in einem Binärbaum Java Basics - Anfänger-Themen 21
G Binärbaum grafisch darstellen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben