在按照二叉查找树(二叉查找树(BST:Binary Search Tree) )的方式插入元素构建一个平衡二叉树(平衡二叉树 )时,可能会出现不平衡的现象。可以根据新插入节点与最低不平衡节点之间的位置关系进行相应的调整。
我们先把需要调整的类型分为四种情况:LL型、RR型、LR型、RL型。使用图形示例与实际代码结合的方式对不平衡二叉树进行旋转。
定义一个树节点:
LL型调整
由于在y_6的左孩子(L)的左子树(L)上插入新结点2,使原来平衡二叉树变得不平衡,此时y_6的平衡因子由1增至2。显然,按照大小关系,结点x_3应作为新的根结点,1和y_6两个节点分别作为左右孩子节点才能平衡,y_6结点就好像是绕结点x_3顺时针旋转一样。
总结一下LL型调整的一般步骤:
- 将y_6(新的不平衡节点)的左孩子x_3提升为新的根节点;
- 将原来的根节点y_6降为x_3