1:AVL树简介
二叉搜索树在一般情况下其搜索的时间复杂度为O(logn),但某些特殊情况下会退化为链表,导致树的高度变大且搜索的时间复杂度变为O(n),发挥不出树这种数据结构的优势,因此平衡二叉树便应运而生,通过保证树的高度来保证查询的时间复杂度为O(logn),想想人类实在是太聪明了!
2:构造AVL树
在构造一棵AVL树的时候如何保持平衡呢?其手段便是通过各种旋转变换来调整以此保证整棵树的高度,调整的原则是左右子树的高度不能大于1的绝对值(平衡因子)先来介绍下旋转的方法吧。
2.1:LL型
当插入元素后构成LL型,如下图所示,则以2为支,高右转,把3右旋下来保证平衡。
2.2:RR型
当插入元素后构成RR型,如下图所示,则以2为支,高左转,把1左旋转下来保证平衡。