介绍
一个Rope 数据结构用来高效的处理字符串的拼接、查询、删除、及随机访问。Rope的一个典型应用场景是:在一个文本编辑程序里,用来保存较长的文本字符串。如下图,字符串“Hello_my_name_is_Simon”的表示
从上图可以看出,一个Rope 是一个二叉查找树,叶节点包含了的是字符串的子串。非页节点包含的是权重 = 左子树叶节点的所有字符和。一个字符串被分隔为两个部分,左子树包含了字符串的左边部分。右子树包含了字符串的右边部分。
操作API
index(i)
返回i位置的字符。时间复杂度O(logn)。我们通过递归的形式实现搜索。
伪代码实现:
function index(RopeNode node, integer i)
if node.