【发布时间】:2013-07-14 01:32:23
【问题描述】:
我在一个项目(Java 的TreeMap)中使用带有链接叶的红黑二叉树,以快速查找和遍历项目。问题是我可以轻松地在树上获得 35000 个左右的项目,并且有几次我必须删除“X 以上的所有项目”,这几乎可以是整个树(就像一次 30000 个项目,因为它们都更大比 X),而且每次移除它们并重新平衡树都需要花费太多时间。
这里有什么算法可以帮助我(所以我可以自己实现树)?
【问题讨论】:
-
您通常还对数据做什么?总是需要权衡取舍,但您或许可以针对主要使用模式优化数据结构/算法。
-
地图用于语法高亮组件,它使用从整数到标记的映射来跟踪每个标记及其颜色。每个绘图周期我都需要获取树的一部分(“位置 X 和 Y 之间的每个标记”),这就是为什么这些项目也被链接,以便快速迭代。每当用户在组件上键入内容时,删除后的每个标记...因此,如果他在文件开头进行编辑,则必须立即删除许多节点。如果他在文件末尾进行编辑,则只需从树中删除一些。我正在尝试优化这种行为。 =/
标签: algorithm data-structures binary-search-tree tree-balancing