我需要在Java中使用IntervalTree或RangeTree实现,并且无法找到具有工作删除支持的实现。IntervalTree DeleteNode Java实现
有一个内置的一个在sun.jvm.hotspot.utilities.IntervalTree,但deleteNode方法在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.
*/
试图从树上最终抛出异常,就删除节点:
节点的最大终点没有更新 正确
如何让pr在sun.jvm.hotspot.utilities.IntervalTree的子类中正确执行delete
功能?或者是否有另一个Interval Tree实现已经正确实现了这个?
目前我只是在清除树并重新填充每次删除时,这是非常不理想的(注意:在RBTree中设置DEBUGGING = false会大大提高速度)。
感谢您的链接,Yishai。我正在看文档http://olduvai.sourceforge.net/tj/tj-javadoc-public/TreeJuxtaposer/RangeTree.html,并没有看到任何方式来获取一个范围的节点列表,或修改树一旦创建。它也看起来像他们使用它的GUI项目有一些依赖泄漏。我的猜测是这个项目的需求非常具体,而不是一个通用的RangeTree。你有没有使用这个实现? –
@Sam,不,我没有用过它。这只是我能找到的替代方案。由于它是开源的,它可能会给你一个更好的基础,而不是子类化太阳实现。 – Yishai