普通的二叉搜索树可能会由于数据不平均、删除产生高度差等原因,使树倾向于不平衡生长,导致操作慢于O(NlogN)。
为应对此现象,将搜索、删除、插入的最坏时间也控制在O(NlogN)上,产生了平衡二叉树的概念。
一颗平衡二叉树的递归定义是:它的左右子树高度相差不超过1,且左右子树也都是平衡二叉树。
AVL树是最早被发明的平衡二叉树算法,通过每个节点维护高度信息,控制插入或删除时的高度差。
当某次操作后,左右子树的高度差大于或等于(一般是等于)2时,则通过一定的旋转操作使高度差恢复符合定义的状态。
具体代码书写中………………………………