public class Tree {
private TreeNode root;
public Tree(TreeNode aRoot) {
this.root = aRoot;
}
}
public class TreeNode {
private ArrayList<TreeNode> children = new ArrayList<TreeNode>();
private Object data;
public TreeNode(Object aData) {
this.data = aData;
}
public void addChild(TreeNode aNode) {
this.children.add(aNode);
}
usw. ...
}
Ishildur hat gesagt.:Das sehe ich anders, [...]
N-äre Trees sind eine Sache, ein Tree mit belibieg vielen Child-Nodes unter einer Node ist wieder etwas ganz anderes.Ishildur hat gesagt.:Das sehe ich anders, denn der ADT eines Trees lässt sich sehr einfach und unkompliziert umschreiben! Das einzig spezielle ist der Node, aber dafür gäbe es ja die Möglichkeit zur generischen Programmierung! Aber ich möchte mich nicht streiten, wenn Java keine Trees in der Klassenbibliothek enthält, dann implementiere ich halt selbst eine!
Mfg Ishildur
In beiden geht es nur um die reihenfolge (Ordering), hat nix mit "echten" trees zu tun.byto hat gesagt.:Was ist mit TreeMap, TreeSet ?
(1)
/
(2)
(1)
/ \
(2) (3)
/ \
(4) (5)
maki hat gesagt.:ein TreeSet stellt nur die Reihenfolge der Elemente sicher wenn man drüberiteriert, bei einer TreeMap ist es ähnlich.
Was Du da so schön grafisch veranschaulichst, ist aber gerade nichts anderes als die Reihenfolge der Knoten.In einem "echten" Tree will ich zB. einen neuen Knoten anhängen (neuer Child node), so das aus dieser Struktur: ...
Ach ja?Was Du da so schön grafisch veranschaulichst, ist aber gerade nichts anderes als die Reihenfolge der Knoten.
Ja, aber die Reihenfolge und die daraus resultierende schnelle Laufzeit von log(n) wird ja eben genau dadurch erreicht, dass die interne Struktur ein Baum ist (TreeMap: Red-Black tree based implementation of the SortedMap interface.).
Intern mögen ja Bäume verwendet werden, aber diese internen Datentypen kann ich nicht nutzen in Java, deswegen braucht man seine eigenen Implementierung -> keine Tree-Datenstruktur in der Standard APIEs ging mir im Grunde nur darum, dass behauptet wurde, dass Java keinen Tree als Datenstruktur mitliefert. Diese Aussage ist halt falsch. icon_wink.gif
TreeMap ist ja wie gesagt kein beliebiger Baum sondern ein Red-Black-Tree, also ein Binary-Search-Tree. Warum sollte ich da genau an (2) irgendwas einfügen?Dann gib füge doch mal in einem Tree/Map/Set zwei Kinderknoten an (2) an, dann sage mir alle Kinder von (2) und nur die *g*