我想让我的avl树支持重复的键,但是默认的二叉搜索树在处理重复键时存在问题,因为旋转操作可能会导致具有相同键的节点位于其父节点的左右两侧。
例如,当添加三个具有键A的节点时,树会执行旋转操作,使其变成以下结构:
A
/ \
A A
因此,获取该键的所有条目将是一个问题...并且在两个方向上搜索都不好。
我想到的解决方法是使每个节点存储一个重复项的数组,因此当添加一个已经存在的新项目时, 只需将一个新项目添加到数组中,删除具有关键字的项目将删除整个节点,而找到具有关键字的所有项目将返回该数组。
还有其他处理重复项的方法吗?
插入项需要一个键和一个值..所以我需要存储这些值以便通过findAll与特定键方法返回它们。