【问题标题】:Rope data structure explanation?绳子数据结构解释?
【发布时间】:2016-10-15 22:51:26
【问题描述】:

我在 wikipedia 上阅读了有关绳索数据结构的内容,对描述感到有些困惑。

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

说明

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

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

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

下图是维基百科的例子之一。

.

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

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

  • 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?)

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

谢谢。

【问题讨论】:

    标签: data-structures binary-tree


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多