版权声明:版权声明:本文为博主原创文章,博客地址:https://blog.csdn.net/imbingoer 未经博主允许不得转载 https://blog.csdn.net/imbingoer/article/details/86088609
平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对二叉查找树来说,时间上稳定了很多。
旋转
涉及到插入或者删除操作时,可能会引发二叉树的不平衡。需要对二叉平衡树进行旋转。
下图涉及到四类插入操作,都引发了不平衡。
- 左子树左孩子(1)。单向右旋
- 左子树右孩子(4)。先左后右旋转
- 右子树左孩子(3)。先右后左旋转
- 右子树右孩子(6)。单向左旋转