平衡二叉树的调整

学习数据结构以来,平衡二叉树的调整一直会了又忘,写个博客加深记忆

          理解:平衡二叉树:任意结点的左右子树高度之差要小于等于1。当新插入的结点使得这种平衡性被破坏,就需要调整。怎么调整取决于造成不平衡的“麻烦结点”和“根结点(插入后不平衡结点)”的位置关系。

最重要的是!!!!:调整哪三个结点

               怎么调整:将三个结点中位于中间的树变为根节点

1.右右旋转(RR)---插入结点是根结点右子树的右子树,如图

平衡二叉树的调整

调整:把被破坏结点的右子树提上来当作根节点

平衡二叉树的调整

举例:插入13导致结点5平衡因子=1-3=-2,而且14是5的右子树的右子树

平衡二叉树的调整平衡二叉树的调整

2.左左旋转

平衡二叉树的调整

调整:如下图所示,需要注意的是根据平衡二叉树原理将BR放到A的左子树

平衡二叉树的调整

如果一个结点插入导致很多结点平衡被破坏,优先选最距离插入结点最近的结点为根结点调整

平衡二叉树的调整

 上图Apr插入导致Mar和May平衡均被破坏,这里先选择Mar为根结点进行LL调整

3.LR旋转

平衡二叉树的调整

4.RL旋转

平衡二叉树的调整