AVL 树是否可以对不同节点中的键具有相同的值?

Can an AVL tree has the same value for a key in different nodes?

本文关键字:节点 是否 AVL      更新时间:2023-10-16

我不知道怎么问这个,但我会尝试。

所以我实现了一个 AVL 树,它与复杂性 O(log n) 完美配合。

我想在其上应用一些功能,但为了做到这一点,我必须允许我的键在某个时候具有相同的值(这意味着没有唯一键)。换句话说,如果我添加一个数字

为 4 的键(键 = 4),我可以插入到另一个数字为 4 的键(另一个键 = 4)。 最终我的树将是,根中的X,左子树的值小于X,右子树的值大于或等于X.(或者显然可以允许等于左子树而不是右子树)。

我的问题是,我知道这仍然会被认为是一个二叉搜索树,但它仍然会被认为是一个 AVL 树吗? 随着 O(log n) 在其所有操作中的复杂性?我的意思是这个平等的东西不会影响任何事情?还是我错过了什么!?

非常感谢你们

AVL 树不需要键的唯一性。元素类型需要的唯一操作是操作<,即使在您可以认为键相等的情况下,这也是有效的操作。你是右的,左子树将由小于 then 的键组成,但右子树项的值"不小于"(逻辑上应该大于或相等,但甚至不需要元素具有相等或伟大的概念)。

关于C++,std::multiset 不需要键的唯一性,可以作为 AVL 树实现。

其余的取决于您的实现。