【问题标题】:why segment tree is implemented using arrays instead of BT为什么使用数组而不是BT来实现段树
【发布时间】:2017-07-25 05:30:48
【问题描述】:

我对段树的实现有疑问。为什么段树是用数组而不是二叉树来实现的?

如果我使用数组实现它,我会得到什么好处,如果实现为二叉树,那么问题是什么?为了使用数组实现,我们需要使用左子函数为 2*i+1,右子函数为 2*i+2。如果我们实现为二叉树,我们可以简单地执行 node -> lft & node->rht。但问题是什么?谢谢

【问题讨论】:

    标签: data-structures tree segment


    【解决方案1】:

    优点是密度。数组占用的空间与内容一样多。对于二叉树,每个节点都有内存管理开销。子指针也需要额外的空间。此外,数组通常位于连续的内存位置,而树节点可能分布在整个堆中,这意味着内存缓存不太可能提供帮助。

    【讨论】:

      【解决方案2】:

      表示为数组的另一个优点是我们既有从父母到孩子的链接,也有从孩子到父母的链接。

      【讨论】:

      • 你能告诉我任何需要从孩子到父母的链接的 seg 树用例吗?
      猜你喜欢
      • 1970-01-01
      • 2016-11-29
      • 2017-12-21
      • 2016-11-30
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多