Ich brauche eine IntervalTree oder Bereichsbaum Implementierung in Java und Mühe habe einen zu finden, mit der Streichung Unterstützung arbeiten.IntervalTree DeleteNode Java Implementation
Es gibt eine eingebaute in einem an sun.jvm.hotspot.utilities.IntervalTree, aber die deleteNode Methode in den RBTree Super heißt es:
/**
* FIXME: this does not work properly yet for augmented red-black
* trees since it doesn't update nodes. Need to figure out exactly
* from which points we need to propagate updates upwards.
*/
Der Versuch, Knoten zu löschen von einem Baum, um die Ausnahme zu werfen endet:
Knotens max Endpunkt wurde nicht aktualisiert richtig
Wie schwierig wäre es zu pr implementieren Sie delete
Funktionalität in einer Unterklasse der sun.jvm.hotspot.utilities.IntervalTree? Oder gibt es eine andere Interval Tree-Implementierung, die dies bereits korrekt implementiert?
Zur Zeit bin ich nur den Baum auszulöschen und wieder bevölkern es jedes Mal, wenn es eine Deletion, die bei weitem nicht ideal ist (Anmerkung: Einstellung DEBUGGEN = false in der RBTree Dinge beschleunigt enorm).
Danke für den Link, Yishai. Ich schaue auf die Dokumente http://olduvai.sourceforge.net/tj/tj-javadoc-public/TreeJuxtaposer/RangeTree.html und sehe keine Möglichkeit, eine Liste von Knoten für einen Bereich zu erhalten, oder ändern Sie die Baum einmal erstellt. Es sieht auch so aus, als ob es ein Abhängigkeitsleck auf dem GUI-Projekt gibt, mit dem sie es verwenden. Meine Vermutung ist, dass dies sehr spezifisch für die Bedürfnisse dieses Projekts ist und kein allgemein verwendbarer RangeTree. Hast du diese Implementierung benutzt? –
@Sam, nein ich habe es nicht benutzt. Es war nur die Alternative, die ich finden konnte. Da es sich um Open Source handelt, bietet es Ihnen möglicherweise eine bessere Basis als die Sun-Implementierung. – Yishai