简介
BST退化: 在添加一组递增元素时,BST会退化成一个链表
,查询效率降低为O(n)
.
AVL是为了解决BST 退化而造成的查询效率降低的问题,最主要对BST进行了结构性的改变(进行旋转)
.
平衡: 节点的左右子树高度之差不能超过1
.
AVL树的最差.最好.平均的增删插的时间复杂度为 O(log<2> N)
.
AVL的最差情况下,增删查需要旋转树的高度次 O(log<2> N)
.
四种旋转操作
为了维持节点平衡,引入四种节点的旋转的操作
1.左子树太高
进行右旋操作
child = node.left ; // 将node的左子树作为child
node.left = child.right;