标签:ext 转化 二叉排序树 text 网上 技术 证明 目标 分享
网上的资料杂乱,树的旋转本来简单易懂但被写的很麻烦
请不要死记,没有意义
首先我们要明白一些原则:
旋转是以三个节点和这三个节点的子树为操作对象的
旋转会有一个旋转中心,就是位于三个节点中间的那个节点
旋转的意义不在于旋转或者考倒大家,而是通过旋转使得二叉排序树趋近平衡,然后由此引出的单旋转和双旋转,最终的目的就是为了使得结构趋于平衡
树的旋转发生的情况总共四种:
左左,右右
左右,右左
三角形代表一棵子树,可以为空
由于是对称的两组,另外一组花的要假一点
实际还可以扯出一种情况,就是平衡状态,这种状态不需要旋转
旋转只分两种:左旋转和右旋转
然后,可以通过一次或多次旋转可以使得四种情况相互转化
证明:
由上面的图片2可以看出,左右,左右通过一次旋转可以转化为左左,右右的情况
然后由图一不难看出,左左,右右都可以通过一次旋转变为近似平衡的结构,也就是旋转通常要达到的目标情况,如果以这一情况为中转,则可以实现左左,右右的转化
加上旋转可逆,也就是可以还原,显然几种情况是能相互转换的
也就是:
左右>左左>平衡>右右>右左
右左>右右>平衡>左左>左右
旋转的最终目的,是使得各种二叉排序树(AVG,Splay,Treap等等)趋紧于平衡状态
即
单旋转:
双旋转:
标签:ext 转化 二叉排序树 text 网上 技术 证明 目标 分享
原文地址:https://www.cnblogs.com/TAMING/p/9826611.html