Ho bisogno di un'implementazione IntervalTree o RangeTree in Java e sto avendo problemi a trovarne uno con il supporto per l'eliminazione.IntervalTree DeleteNode Implementazione Java
C'è un built-in uno a sun.jvm.hotspot.utilities.IntervalTree, ma il metodo deleteNode negli stati superclasse RBTree:
/**
* 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.
*/
Cercando di eliminare i nodi da un albero finisce per gettare l'eccezione:
Nodo l'endpoint massimo non è stato aggiornato correttamente
Quanto sarebbe difficile pr implementare operativamente la funzionalità delete
in una sottoclasse di sun.jvm.hotspot.utilities.IntervalTree? O c'è un'altra implementazione di Interval Tree che già implementa correttamente questo?
Attualmente sto cancellando l'albero e lo ricompongo ogni volta che c'è una cancellazione, che è tutt'altro che ideale (nota: l'impostazione DEBUGGING = false nel RBTree ha accelerato enormemente le cose).
Grazie per il collegamento, Yishai. Sto guardando i documenti http://olduvai.sourceforge.net/tj/tj-javadoc-public/TreeJuxtaposer/RangeTree.html e non vedo alcun modo per ottenere un elenco di nodi per un intervallo, o modificare il albero una volta creato. Sembra anche che ci sia del leakage di dipendenze sul progetto della GUI con cui lo stanno usando. La mia ipotesi è che questo è molto specifico dei bisogni di quel progetto, e non un RangeTree per tutti gli usi. Hai usato questa implementazione? –
@ Sam, no non l'ho usato. Era solo l'alternativa che potevo trovare. Poiché è open source, potrebbe darti una base migliore per iniziare rispetto alla sottoclasse dell'implementazione di Sun. – Yishai