Binary Tree -AVL

写在前面:对于AVL的印象一直停留在左旋、右旋的层次,具体的概念都已经忘记了。趁着复习二叉树的劲儿,又认真学习了一下AVL。这两天也看了不少关于AVL的资料和博客,这里感谢https://www.cnblogs.com/zhuwbox/p/3636783.html,博主写的很通俗易懂。感恩师兄,南无本师释迦牟尼佛(今天看了灵光寺舍利)。


基本概念:

AVL树的本质是BST,但它又有下面的特点:

>它是一棵空树,或者它的左右子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

>平衡因子bf:结点的左子树的深度减去右子树的深度,那么显然-1<=bf<=1


对于一般的BST所言,它的期望高度是O(log2n),各个操作的时间复杂度为O(log2n),显然此时它便是一棵AVL树。但是我们必须要考虑到在极差的情况下,BST将变化为斜二叉树(比如插入的结点是有序的),此时的各操作的时间复杂度为O(n)。当然,插入的问题可以使用随机建立二叉树的方式来解决,但是在经过多次操作之后,由于在删除时,我们总是选择将待删除的结点的后继来取代它,这样就会造成右边的节点数减少,导致树的左边偏沉。这样也会提高时间复杂度。


AVL的插入操作,可能会造成树的不平衡,需要重新调整树。

需要考虑四种情况:

>右右插入,左旋(所有图片均选自https://www.cnblogs.com/zhuwbox/p/3636783.html,感谢大佬!)

>左左插入,右旋

和上面左旋刚好反过来。

>左右插入,左右旋

>右左插入,右左旋

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值