AVL树---平衡的二叉查找树

AVL树是每个结点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1)。

它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。

AVL树的性质

  • 左子树和右子树的高度差不超过1
  • 每个结点的左子树和右子树都是AVL树
  • 每个结点都有一个平衡因子,任一结点的平衡因子是-1,0,1。每个结点的平衡因子等于右子树高度减去左子树的高度

AVL树是在二叉查找树的基础上建立的,我们知道二叉查找树在最坏情况下(每个结点只有左子树或右子树)增删查的时间复杂度是O(N),这种极端的情况下树是高度不平衡的。

在二叉查找树的基础上,如果使左右子树的高度差不超过1,即达到高度平衡的状态,此时增删查的时间复杂度为O(logN)(2为底数)。

为了让它保持高度平衡,我们引入了平衡因子,每个结点的平衡因子只可能是-1,0,1中的一个。

每次插入/删除一个结点,我们都需要向上更新一下新增结点/删除结点的祖先的平衡因子。一旦发现某个祖先的平衡因子变为2或者-2,我们就需要通过旋转来使这棵树保持AVL树的特性。

转载于:https://www.cnblogs.com/i-hard-working/p/10749998.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值