Java : Wie implementiere ich einen generischen Binären Suchbaum?
Bis jetzt, habe ich schriftlich eine Knoten-Klasse, die als
class Node {
private value;
private Node left;
private Node right;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node getLeft() {
return left;
}
public void setLeft(Node left) {
this.left = left;
}
public Node getRight() {
return right;
}
public void setRight(Node right) {
this.right = right;
}
}
- und Binary-Search-Tree als
public class BinarySearchTree {
private Node root;
public BinarySearchTree(int value) {
root = new Node(value);
}
public void insert(int value) {
Node node = new Node(value);
//insert logic goes here to search and insert
}
}
Nun möchte ich unterstützen BinarySearchTree um Knoten einfügen jeglicher Art wie strings, Menschen
Wie kann ich es allgemein zu halten, jede Art?
Was haben Sie versucht? Haben Sie recherchiert, java generics und wissen Sie über die <T> syntax?
InformationsquelleAutor daydreamer | 2012-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Generika verwendet werden:
Es gibt eine serielle downvoter hier in der Nähe.
danke für die Informationen:)
Keine Ahnung, wer die nach-unten-Wähler, aber achten Sie darauf, dass Sie sich durchsetzen muss T zu erweitern vergleichbar, da es sonst unmöglich sein wird, zu implementieren, die den Vergleich code.
Es muss auch
Comparable<T>
völlig korrekt. 🙂InformationsquelleAutor Petar Minchev
Nur machen alle
Node
undBinarySearchTree
generische Klassen:und:
Hinweis: die
Comparable
Erweiterung Einschränkung, die Sie später brauchen wird, um zu erzwingen Bestellung Knoten im Baum. Dank zaske für die Anregung.Sie muss durchsetzen, T zu erweitern vergleichbar, oder Comprable<T> am TOR, sonst werden Sie nicht in der Lage sein, um die Suche durchzuführen.
Guter Vorschlag.
InformationsquelleAutor Tudor
Bitte nicht deinen code nicht kompilieren.
Sie haben ein paar Herausforderungen -
A. Definieren von Knoten als Generic -
B. Ihre Suche Klasse auch sollte generisch sein und die Signatur sollte es sein,
Dies ist erforderlich, um zu erzwingen, Sie bieten nur Typen, die Umsetzung Vergleichbar sind, so werden Sie in der Lage zu führen Sie die Suche in dem Baum.
Ich denke, der Knoten zu erweitern, vergleichbar auch!!!!!
Nein. Es ist kein code innerhalb der Klasse Knoten muss Methoden Vergleichbar. Natürlich, Bei der Verwendung von BinaryTreeSearch, es gibt keine Möglichkeit zum erstellen von Knoten für Klassen, die nicht umsetzen, Compparable.
InformationsquelleAutor Yair Zaslavsky
Haben Sie zwei Möglichkeiten:
1) Man kann in generics/templates.
2) Haben Ihren Baum zu nehmen, in eine Art
Object
stattint
und haben die Benutzer sind verantwortlich für das Gießen.InformationsquelleAutor Conor Sherman
Fand ich eine SnapTreeMap, die eine gleichzeitige AVL-Baum system hier.
InformationsquelleAutor adv
https://www.cs.cmu.edu/~adamchik/15-121/lectures/Trees/code/BST.java
InformationsquelleAutor Victor
InformationsquelleAutor Sanil
Regaring zweite Frage, die Sie verwenden sollten, Vorlage :
http://www.oracle.com/technetwork/articles/javase/generics-136597.html
Bezüglich der ersten :
http://en.wikipedia.org/wiki/Binary_search_algorithm
http://en.wikipedia.org/wiki/Tree_rotation (insert)
Vielleicht ist das schneller Lesen:
http://www.roseindia.net/java/java-get-example/java-binary-tree-code.shtml
Gute Studie!
InformationsquelleAutor pedr0