平衡二叉树(AVL树的定义,旋转详解)

平衡二叉树:或者是一棵空树,或是具有下列性质的二叉树:它的左子树和右子数都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1
结点的平衡因子BF:该结点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只能是-1,0,1.
那如何使二叉排序树变为平衡二叉树呢?通过各种旋转
LL顺时针,RR逆时针,LR:先RR再LL,RL:先LL再RR
什么时候需要单旋转,而什么时候需要多旋转?
单旋转: 插入点不介于 不满足AVL条件的树根 和 树根对应孩子节点之间;
双旋转: 插入点介于 不满足AVL条件的树根 和 树根对应孩子节点之间;
如:
《平衡二叉树(AVL树的定义,旋转详解)》
插入点13不在4和7之间,所以只需要一次单旋转就够了
单旋转的轴:单旋转的轴显然是不符合AVL条件的树根的直接孩子;
C1.1)左左单旋转的轴:是不符合AVL条件的树根的左孩子;
C1.2)右右单旋转的轴:是不符合AVL条件的树根的右孩子;
因为47 介于 40 和 50 之间, 所以肯定需要双旋转;
双旋转的轴:相信你也看到了, 双旋转的轴显然是插入点的直接父节点;(除了两个特例)
《平衡二叉树(AVL树的定义,旋转详解)》
《平衡二叉树(AVL树的定义,旋转详解)》

双旋转的话,把参考链接里的那几幅图看一下就够了
注意这两种情况:
《平衡二叉树(AVL树的定义,旋转详解)》
57跑到60那去了(这是相邻的)
《平衡二叉树(AVL树的定义,旋转详解)》
53是跟着55的,没有像上一个那样跟着60,这是相对的,注意箭头标出来的

参考链接(https://www.cnblogs.com/cherryljr/p/6669489.html)

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/m0_37089517/article/details/79721302
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞