节点大小平衡树

更新时间:2023-05-18 22:22

节点大小平衡树(Size Balanced Tree),简称SBT,是由陈启峰发明的一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构

技术介绍

陈启峰于2006年底完成论文《Size Balanced Tree》,并在2007年的全国青少年信息学奥林匹克竞赛冬令营中发表。相比红黑树AVL树等自平衡二叉查找树,SBT更易于实现。据陈启峰在论文中称,SBT是“目前为止速度最快的高级二叉搜索树”。SBT能在的时间内完成所有二叉搜索树(BST)的相关操作,而与普通二叉搜索树相比,SBT仅仅加入了简洁的核心操作Maintain。由于SBT赖以保持平衡的是size域而不是其他“无用”的域,它可以很方便地实现动态顺序统计中的Select和Rank操作。

性质

Size Balanced Tree(SBT)是一种通过大小(Size)域来保持平衡的二叉搜索树,它也因此得名。它总是满足:

对于SBT的每一个结点,

即每棵子树的大小不小于其兄弟的子树大小。

旋转

SBT的旋转(Rotations)与其他许多高级BST相同。它是下面提到的Maintain操作的基础。

左旋转

左旋转(Left-Rotate)的过程如下:

右旋转

右旋转(RIght-Rotate)的过程如下:

基本操作

查找

SBT的查找操作与普通BST完全相同。下面的过程将返回指向目标节点的指针。

取大取小

由于SBT本身已经维护了size,因此这两项可用Select操作完成。

后继

SBT的后继操作与普通BST完全相同。

前趋

SBT的前趋操作与普通BST完全相同。它与后继操作对称。

插入

SBT的插入操作仅仅比普通BST的多出了一个Maintain操作,以及对s的简单维护(这在普通BST的动态顺序统计操作中也是必须的)。下面这个过程将一个节点v插入SBT中。

删除

与普通维护size域的BST删除相同(无需Maintain)。

检索元素

下面这个过程将返回一个指向以x为根的子树中包含第i小关键字的节点的指针。

求元素的秩

SBT的rank操作与普通BST完全相同。

性能分析

SBT的高度是,Maintain是,所有主要操作都是。但是“SBT是‘目前为止速度最快的高级二叉搜索树’”在实际测试中没有体现,并且OI中较为冷门。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}