我正在努力在 Python 中实现二叉搜索树 (BST),当树遇到重复值时,我遇到了问题。我知道传统上,BST 不处理重复项,但我想修改我的树以允许重复值,方法是将它们存储在左子树、右子树中,或使用其他策略。
类树节点: def init(self, key): self.left = 无 self.right = 无 self.value = key
def insert(根, 键): 如果 root 为 None: 返回树节点(键) 别的: 如果 root.value < key: root.right = insert(root.right, key) elif root.value > 键: root.left = 插入(root.left, 键) 别的: # 尝试处理重复项(无法正常工作) root.right = 插入(root.right, 键) 返回根 当我尝试插入重复值时,树似乎没有正确维护其结构,并且我的搜索操作没有返回预期结果。处理二叉搜索树中的重复值的最佳策略是什么?我应该对插入函数进行哪些更改才能正确处理重复项?我应该注意这种方法是否存在任何潜在的陷阱?
允许左子树或右子树重复: 左子树:如果节点的值等于键,则可以将重复值插入到左子树中。 右子树:或者,您可以将重复值插入到右子树中。 def 插入(根,键): 如果 root 为 None: 返回树节点(键) 别的: 如果 root.value < key: root.right = insert(root.right, key) else: root.left = insert(root.left, key) return root Note: By inserting duplicates into the left subtree, you maintain the property where all left descendants are less than or equal to the node's value.