![]() |
1
3
你其实没做错什么。 在注释中,您会说“我认为L边小于或等于当前节点值,而R边是较大的值。我错了吗?” ……是的,你错了。 对于具有重复值的树,右分支仅包含严格较大元素的条件与平衡操作不兼容。试试这个:将20个相同值的副本链接到一个树中。如果只能在左侧链接相等的值,则必须创建单个链接列表。你的树有20层深,完全不平衡。 考虑树中重复值的方法是,树中确实没有任何重复值:-)bst定义 全部的 排序和有效的再平衡操作,如旋转 保存 全部订购。
当你插入第二个
如果你仔细想想,一定是这样,因为平衡操作 别看了 在节点中的值处。它们连接在一起的方式决定了顺序,而且顺序不会改变。 |
![]() |
2
2
对于您的情况,如果键和值一致,可以如下所示。假设您的节点类如下所示:
然后,在插入新值时,可以增加
这样,你就不再有复制品了:) |