java - IntervalTree DeleteNode Java实现

标签 java binary-tree interval-tree

我需要一个 IntervalTree或 Java 中的 RangeTree 实现,但很难找到具有有效删除支持的实现。

sun.jvm.hotspot.utilities.IntervalTree 处有一个内置的,但是 deleteNode RBTree 父类(super class)中的方法声明:

/**
 * 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.
 */

尝试从树中删除节点最终抛出异常:

Node's max endpoint was not updated properly

在 sun.jvm.hotspot.utilities.IntervalTree 的子类中正确实现 delete 功能有多难?或者是否有另一个 Interval Tree 实现已经正确实现了这个?

目前我只是清除树并在每次删除时重新填充它,这远非理想(注意:在 RBTree 中设置 DEBUGGING=false 可以极大地加快速度)。

最佳答案

我最终修改了 sun.jvm.hotspot.utilities.IntervalTree 以维护一组已删除的节点。进行搜索时,我会排除该集合中的所有项目。不理想,但这比让“真正的”删除工作容易得多。一旦删除的集变得太大,我就会重建树。

关于java - IntervalTree DeleteNode Java实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418150/

相关文章:

Java JMenuBar重画背景

java - 二叉树的线程二叉树实现

c++ - 寻找C++区间树算法实现

Java List 和 Collection 抽象方法不指定主体

java - 无法通过 java 邮件 API 发送电子邮件?

java - 如何从Java中的列读取数组?

r - 从 R 中的排序列表创建二叉搜索树

java - 二叉搜索树实现中迭代器和泛型的困难

javascript - "circular"区间树算法

python - Pandas 的区间交集