首页
学习
活动
专区
工具
TVP
发布
技术百科首页 >数据结构 >数据结构的AVL树和伸展树有什么区别?

数据结构的AVL树和伸展树有什么区别?

词条归属:数据结构

AVL树和伸展树是两种常见的自平衡二叉搜索树结构,它们有以下几点区别:

平衡方式

AVL树通过旋转操作来保持平衡,每个节点的左右子树高度差不超过1;伸展树通过伸展操作来保持平衡,每次查找后将被查找节点伸展到根节点位置。

平衡因子

AVL树的平衡因子为左子树高度减去右子树高度的绝对值,只有平衡因子为-1、0、1的节点才是平衡的;伸展树没有平衡因子的概念,通过伸展操作来保持树的平衡。

调整方式

AVL树需要进行旋转操作来保持平衡,旋转操作会改变树的结构;伸展树通过伸展操作来保持平衡,伸展操作不会改变树的结构,只是改变节点的位置。

查找效率

AVL树的查找效率较高,平均时间复杂度为O(log n);伸展树的查找效率也较高,但由于伸展操作的存在,最坏时间复杂度可能会退化到O(n)。

应用场景

AVL树适用于内存中的数据结构,常用于数据库索引、编译器和图形学等场景;伸展树适用于内存中的数据结构,常用于动态查找和缓存等场景。

相关文章
伸展树,据说比AVL树要简单一些
在了解伸展树前,我建议大家先了解一下AVL树,这会有助于理解伸展树的很大一部分,毕竟伸展树也是从AVL上生长出来的。 AVL树:跟我一起动手种一棵生长树吧
看、未来
2020-08-25
1K0
数据结构图解(递归,二分,AVL,红黑树,伸展树,哈希表,字典树,B树,B+树)
递归反转 二分查找 AVL树 AVL简单的理解,如图所示,底部节点为1,不断往上到根节点,数字不断累加。 观察每个节点数字,随意选个节点A,会发现A节点的左子树节点或右子树节点末尾,数到A节点距离之差
老梁
2019-09-10
9370
数据结构之AVL树
我们先来回忆一下二分搜索树所存在的一个问题:当我们按顺序往二分搜索树添加元素时,那么二分搜索树可能就会退化成链表。例如,现在有这样一颗二分搜索树:
端碗吹水
2021-02-02
4820
图解数据结构树之AVL树
AVL树本质上是一颗二叉查找树,但是它又具有以下特点:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为平衡二叉树。下面是平衡二叉树和非平衡二叉树对比的例图:
233333
2019-08-05
1.4K0
伸展树的先序和后序
摘要:设T是二叉搜索树。我们证明了关于Splay算法行为的两个结果(Sleator和Tarjan 1985)。我们的第一个结果是通过按照T的预订或T的后序的顺序将密钥插入到空的二进制搜索树中需要线性时间。我们的证据使用了这样一个事实,即预订和预订是模式避免的:即它们不包含分别与(2,3,1)和(3,1,2)顺序同构的子序列。模式避免意味着对项目插入方式的某些限制。我们利用这个结构利用一个简单的潜在函数来计算位于未插入节点的访问路径上的插入节点。我们的方法可以扩展到避免更一般模式的排列。其次,如果T是具有相同键的任何其他二元搜索树,如T 和 T'是权重平衡(Nievergelt和Reingold 1973),然后splaying 的T的预订序列或T的后序列从T'开始线性时间。为了证明这一点,我们证明了平衡搜索树的预订和出版物不会以对称的顺序包含许多大的“跳跃”,并利用动态手指定理来利用这一事实(Cole et al.2000)。我们的两个结果都提供了有利于难以捉摸的“动态最优猜想”的进一步证据。
罗大琦
2019-07-18
4600
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券