在二进制搜索树中处理重复项的优雅方法是什么?假设每个键都有几个不同的值相关联。我需要做的是按顺序迭代所有值。因此,如果我有2个值A和B的密钥1,以及一个值C的密钥2,我想得到对:(1,A),(1,B),(2,C),当调用类似的东西时TreeIterator.next();
我能想到:
visited
标志还有其他建议吗?作为一般准则,我希望Tree实现尽可能抽象。
答案 0 :(得分:1)
听起来基本上你做想要每个键的值列表,是的。因此,添加到地图的过程是:
在迭代地图时,您的一般模式是:
当然,如果您不需要为实现学习目的而自行实现此功能,则可以使用现成的多重映射,例如Guava的TreeMultimap
。如果你 实施它以进行自我教育,我首先要实施一个“普通”二进制搜索地图,然后从那里开始。