【发布时间】:2010-03-18 19:58:40
【问题描述】:
我想让我的avl-tree 支持重复键,但是binary search tree 的默认行为存在重复项,即旋转可能会使具有相同键的节点位于父节点的左侧和右侧。
例如,当添加三个节点时,所有节点都具有键 A 将导致树进行旋转,如下所示:
A
/ \
A A
因此,使用该键获取所有条目将是一个问题......并且双向搜索并不好。
我想到的解决方案是让每个节点存储一个重复的数组 所以当添加一个已经存在的新项目时,只会向数组中添加一个新项目, 删除带有键的项目将删除整个节点,而查找所有带有键的项目将返回该数组。
还有其他处理重复的方法吗?
插入项需要一个键和一个值..所以我需要存储值以便通过 findAll 使用某些键方法返回它们。
【问题讨论】:
标签: binary-tree binary-search-tree avl-tree reference-counting