【发布时间】:2016-07-05 04:29:31
【问题描述】:
所以我一直(到目前为止没有成功)试图让我的红黑树实现与重复项一致地工作,但它似乎总是缺少那个小东西,所以我在这里。
我尝试让树向一侧倾斜,但它似乎没有正确平衡它(从颜色的角度来看)。我想问应该如何将重复添加到红黑树? (除了显然使节点变胖,持有或指向重复的键值)。
不是真的在寻找代码审查,而是对建议更感兴趣。所以基本上我用于插入和平衡的方法(取自Introduction to Algorithms,第三版)是这些(虽然旋转非常明显):
【问题讨论】:
-
选择显而易见的,并为每个键保存一个值列表。键是唯一的。无论如何,您将如何查找节点?
-
我会选择不为键的每个值添加单独的节点,而是将它们捆绑在单个节点中(在列表中或某处)。 R-B 树并不是真正为支持重复的数据结构设计的,而是为集合设计的。
-
如果您告诉我们您认为缺少什么,您可以获得更好的答案。一个例子会产生奇迹。
-
@Sorin 想要一个更笼统的答案,因为正如下面评论中提到的,我只使用外部存储器,所以看代码会很痛苦。
标签: algorithm binary-tree red-black-tree