算法 – AVL树和播放树之间的差异

我正在研究各种树木,并且遇到了AVL树和喷洒树木。我想知道

> AVL树和播放树有什么区别?
>我们在什么基础上选择这些发型?
>这些树的积极和消极是什么?
>这些树在大O表示法上的表现是什么?

>播放树和AVL树都是二叉搜索树,具有出色的性能保证,但它们的不同之处在于保证了性能。在AVL树中,树的形状始终受到限制,使树形平衡,意味着树的高度不会超过O(log n)。这种形状保留在插入和删除上,并且在查找期间不会改变。另一方面,播放树通过重构树来响应其查找来保持有效性。这样,经常访问的元素向上移动到树的顶部并具有更好的查找时间。播放树的形状不受约束,并且根据执行的查找而变化。
>没有关于这个的快速规则。然而,结构之间的一个关键区别在于AVL树保证每个操作的快速查找(O(log n)),而播放树只能保证n个操作的任何序列最多需要O(nlog n)个时间。这意味着如果您需要实时查找,AVL树可能会更好。然而,播放树的平均速度要快得多,所以如果要最小化树查找的总运行时间,则播放树可能会更好。此外,播放树支持一些操作,如分割和合并非常有效,而相应的AVL树操作更多地涉及并且效率较低。播放树比AVL树具有更高的内存效率,因为它们不需要在节点中存储平衡信息。然而,AVL树在具有大量查找的多线程环境中更有用,因为AVL树中的查找可以并行完成,而它们不能在播放树中。因为播放树根据查找重塑自己,如果您只需要访问树的元素的一小部分,或者如果访问某些元素远远超过其他元素,则播放树将胜过AVL树。最后,播放树往往比AVL树更容易实现,因为旋转逻辑容易得多。
>见(2)
> AVL树插入,删除和查找取每个O(log n)时间。喷洒树木具有同样的保证,但保证仅在摊销意义上。任何长的操作序列最多需要O(nlog n)个时间,但是单独的操作可能需要多于O(n)个时间。

希望这可以帮助!

http://stackoverflow.com/questions/7467079/difference-between-avl-trees-and-splay-trees

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:算法 – AVL树和播放树之间的差异