AVL(平衡)树的旋转
在二叉搜索树中,可能会存在几种特别的情况,即左单支、右单支之类的情况,这样的情况在二叉搜索树中查询某个节点代表的内容时,依旧会达到O(N)的时间复杂度,而不能按预期达到O(lgN)的时间复杂度。
所以在树中旋转树的结构,将树调整为一个满足条件的树–AVLTree(平衡树),即右子树的高度减去左子树的高度的绝对值小于2。为了达到AVL树,有四种基本情况,所以对应四种旋转方式,左单旋,右单旋,右左双旋,左右双旋。
——-插入40——-
——-插入25——-
需注意:双旋中各分两种情况,每种情况的分法按照插入节点的双亲节点插入后的平衡因子为1或是-1判断插入的是左孩子还是右孩子,并在双旋之后对平衡因子再次更新
——-插入17——-
——-插入12——-
——-插入37——-
——-插入32——-
选则所需条件和旋转方式均在图中标注。