我正在尝试创建一个以非负有理数x为键的“连续”数据结构。搜索x作为键将返回以x为键的唯一元素,否则将返回所有小于x的最大元素。

这是一张要演示的图像,这里的搜索键x是5.1

Search

我提出的算法对普通的二叉树搜索做了一些修改:
每次采用正确的路径(因此关键点大于节点)时,都会将该节点添加到向量中。如果二叉树搜索后未找到任何节点,则选择向量中最大的节点作为结果。

在那儿:


(java)类已经做到了吗?
一个简单的方法来“破解”现有的类来做到这一点?
一个更好的收藏做到这一点?

最佳答案

您可以使用NavigableMap解决问题。您可以使用NavigableMap#lowerEntry,其中:


  返回与最大键严格小于给定键的键-值映射关系;如果没有这样的键,则返回null。


有了这个,您可以轻松获取价值第二高的元素。

10-06 05:34
查看更多