我需要一个Java 中的IntervalTree或 RangeTree 实现,并且很难找到一个具有有效删除支持的实现。
sun.jvm.hotspot.utilities.IntervalTree有一个内置的,但是 RBTree 超类中的deleteNode方法指出:
/**
* 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.
*/
尝试从树中删除节点最终会引发异常:
节点的最大端点未正确更新
delete
在 sun.jvm.hotspot.utilities.IntervalTree 的子类中正确实现功能有多难?或者是否有另一个已经正确实现的间隔树实现?
目前我只是清除树并在每次删除时重新填充它,这远非理想(注意:在 RBTree 中设置 DEBUGGING=false 极大地加快了速度)。