【发布时间】:2017-07-25 05:30:48
【问题描述】:
我对段树的实现有疑问。为什么段树是用数组而不是二叉树来实现的?
如果我使用数组实现它,我会得到什么好处,如果实现为二叉树,那么问题是什么?为了使用数组实现,我们需要使用左子函数为 2*i+1,右子函数为 2*i+2。如果我们实现为二叉树,我们可以简单地执行 node -> lft & node->rht。但问题是什么?谢谢
【问题讨论】:
标签: data-structures tree segment
我对段树的实现有疑问。为什么段树是用数组而不是二叉树来实现的?
如果我使用数组实现它,我会得到什么好处,如果实现为二叉树,那么问题是什么?为了使用数组实现,我们需要使用左子函数为 2*i+1,右子函数为 2*i+2。如果我们实现为二叉树,我们可以简单地执行 node -> lft & node->rht。但问题是什么?谢谢
【问题讨论】:
标签: data-structures tree segment
优点是密度。数组占用的空间与内容一样多。对于二叉树,每个节点都有内存管理开销。子指针也需要额外的空间。此外,数组通常位于连续的内存位置,而树节点可能分布在整个堆中,这意味着内存缓存不太可能提供帮助。
【讨论】:
表示为数组的另一个优点是我们既有从父母到孩子的链接,也有从孩子到父母的链接。
【讨论】: