我已经实现了AVL树,但我遇到了一个问题。 假设我有以下树: 在添加另一个节点之后: 现在我必须将节点5向左旋转: 但是旋转后,它仍然不平衡。 我在哪里犯了错误?
我有x(百万级)个正整数,它们的值可以像允许的一样大(+2,147,483,647)。假设它们是唯一的,那么在一个查找密集型程序中,最好的存储方式是什么? 到目前为止,我考虑使用二进制AVL树或哈希表,其中整数是映射数据(名称)的键。但我不确定是否可以使用哈希表实现如此大的键和如此大的数量(...
我的最佳猜测是,当您向已经平衡的AVL树中插入或删除一个元素时,一次旋转就足以使其重新平衡。 是否总是只需要一次旋转呢? 下面的例子将有助于说明需要多次旋转的情况。 附注:我将RL / LR旋转算作一次旋转。
据我所知,AVL树和二叉搜索树在平均情况下的时间复杂度相同,在最坏情况下,AVL树胜过BST。这提示我,与BST相比,AVL在与之交互的每种可能方式中始终优于BST,也许在平衡实现方面稍微增加了一些复杂性。 那么,有没有任何理由应该首选BST而不是AVL呢?