Necesito una implementación de IntervalTree o RangeTree en Java, y tengo problemas para encontrar una con soporte de eliminación de trabajo.IntervalTree DeleteNode Implementación de Java
Hay un built-in de uno en sun.jvm.hotspot.utilities.IntervalTree, pero el método deleteNode en los estados superclase 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.
*/
Tratando de eliminar nodos de un árbol termina lanzando la excepción:
Nodo de el punto final máximo no se actualizó correctamente
¿Qué tan difícil sería pr Operly implementar la funcionalidad delete
en una subclase de sun.jvm.hotspot.utilities.IntervalTree? ¿O hay otra implementación de Interval Tree que ya implementa esto correctamente?
Actualmente estoy acabando con el árbol y volviéndolo a poblar cada vez que hay una eliminación, que está lejos de ser ideal (nota: establecer DEBUGGING = false en el RBTree aceleró enormemente).
Gracias por el enlace, Yishai. Estoy viendo los documentos http://olduvai.sourceforge.net/tj/tj-javadoc-public/TreeJuxtaposer/RangeTree.html y no veo ninguna forma de obtener una lista de nodos para un rango, o modificar el árbol una vez creado. También parece que hay alguna fuga de dependencia en el proyecto de GUI con el que lo está usando. Creo que esto es muy específico para las necesidades de ese proyecto, y no un RangeTree de propósito general. ¿Has usado esta implementación? –
@Sam, no, no lo he usado. Era la alternativa que podía encontrar. Dado que es de código abierto, podría darle una mejor base para empezar que la subclasificación de la implementación del sol. – Yishai