我正在尝试创建一个以非负有理数x为键的“连续”数据结构。搜索x作为键将返回以x为键的唯一元素,否则将返回所有小于x的最大元素。
这是一张要演示的图像,这里的搜索键x是5.1
Search
我提出的算法对普通的二叉树搜索做了一些修改:
每次采用正确的路径(因此关键点大于节点)时,都会将该节点添加到向量中。如果二叉树搜索后未找到任何节点,则选择向量中最大的节点作为结果。
在那儿:
(java)类已经做到了吗?
一个简单的方法来“破解”现有的类来做到这一点?
一个更好的收藏做到这一点?
最佳答案
您可以使用NavigableMap解决问题。您可以使用NavigableMap#lowerEntry
,其中:
返回与最大键严格小于给定键的键-值映射关系;如果没有这样的键,则返回null。
有了这个,您可以轻松获取价值第二高的元素。