我需要在一个数组的范围内计算总和,于是我了解了线段树和树状数组(Fenwick Tree),发现这两个数据结构都具有相同的渐进运行时间来查询和更新。我进行了更多的研究,发现这两个数据结构可以以相同的速度完成所有操作。两者都具有线性的内存使用(线段树的内存使用量是树状数组的两倍)。
除了运行时间/内存中的常数因素和实现之外,是否有任何理由让我选择其中一个?
我正在寻找客观的答案,例如在一种数据结构上比另一种快的某些操作,或者可能存在一种限制而另一种不存在。
我看到 StackOverflow 上有两个相关问题,但答案只是描述了这两个数据结构,而没有解释何时应该使用其中一个。