平衡二叉树AVL
平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差(平衡因子)的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。
平衡二叉树是在二叉排序树(BST)上引入的(这一点很重要哦)
讨论:BST为什么需要平衡化?平衡二叉树很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。
构造二叉平衡树的方法:在插入过程中,采用平衡旋转技术
失衡调整旋转平衡处理
-
单向右旋(LL)
-
单向左旋(RR)
-
先左后右旋转(LR)
-
先右后左旋转(RL)