Java 二元搜索树中的重复项
在二叉搜索树中处理重复项的优雅方式是什么?假设每个键都有几个不同的关联值。我需要做的是按顺序迭代所有值。所以,如果我有两个值A和B,键为1,一个值C,键为2,当调用类似TreeInterator.next()的东西时,我想得到两个对:(1,A),(1,B),(2,C) 我能想到:Java 二元搜索树中的重复项,java,binary-search-tree,Java,Binary Search Tree,在二叉搜索树中处理重复项的优雅方式是什么?假设每个键都有几个不同的关联值。我需要做的是按顺序迭代所有值。所以,如果我有两个值A和B,键为1,一个值C,键为2,当调用类似TreeInterator.next()的东西时,我想得到两个对:(1,A),(1,B),(2,C) 我能想到: 每个节点都有一个键和一个值数组,其中包含具有相同键的值 每个节点都有一个已访问标志 还有其他建议吗?一般来说,我希望树实现尽可能抽象。听起来基本上您确实需要每个键的值列表,是的。因此,添加到地图的过程是: 钥匙存
- 每个节点都有一个键和一个值数组,其中包含具有相同键的值
- 每个节点都有一个
标志已访问
还有其他建议吗?一般来说,我希望树实现尽可能抽象。听起来基本上您确实需要每个键的值列表,是的。因此,添加到地图的过程是:
- 钥匙存在吗?
- 如果是,则向现有列表添加值
- 如果没有,请在树中的适当点(正常情况下)创建一个新节点,并从一个值列表开始
- 从左节点生成所有值(较小的键)
- 生成此节点的所有值-(键,值1),(键,值2)等
- 从右节点生成所有值(较大的键)
当然,如果您不需要为了学习目的自己实现这个,您可以使用现成的multimap,例如。如果你是为了自我教育而实现它,我会先实现一个“普通”的二进制搜索映射,然后从那里开始。你所说的“处理”是什么意思?你想代表他们还是接受他们?为什么您需要一个键和一个值数组?如果值都相同,为什么不在该节点中逻辑地保留一个值数的计数?添加了更多说明。很抱歉。