绳索数据结构说明?

时间:2015-02-23 23:19:41

标签: data-structures binary-tree

我正在阅读维基百科上的绳索数据结构,我对描述感到有些困惑。

Wiki链接:http://en.wikipedia.org/wiki/Rope_(data_structure)

描述

  

一根绳子是一棵二叉树,其叶节点包含一个短字符串。

     

每个节点的权重值等于其字符串的长度加上所有叶节点的总和'左子树中的权重,即节点的权重是非叶节点的左子树中的总字符串长度,或叶节点的自身的字符串长度。

     

因此,具有两个子节点的节点将整个字符串分为两部分:左子树存储字符串的第一部分。右子树存储第二部分,其权重是左子的权重和包含字符串长度的总和。

下面的图片是维基百科的一个例子。

Rope data structure tree

我无法查看上图中数字的来源。

  

每个节点的权重值等于其字符串的长度加上所有叶节点的总和'左侧子树的重量

  • C = 6 + 0(E + C'空字符串的长度)?
  • B = 6 + 3 + 0 + 0(E + F + C'空字符串长度+ B'空字符串长度)?
  • 那不对,为什么A 22? (6 + 6 + 9 = 21?6 + 6 + 3 + 9 = 24?)

我很确定我错过了什么。有人可以帮我清理一下吗?

感谢。

1 个答案:

答案 0 :(得分:5)

  

每个节点的权重值等于其字符串的长度加上   左子树中所有叶节点权重的总和......

A没有正确的子树,所以它的值是所有叶子节点的权重之和(即使A有一个右子树,它的值也是相同的):6 + 3 + 2 + 4 + 1 + 6 = 22

B在其左子树中有两个叶子:6 + 3 = 9

C在其左子树中有一个叶子:6