【发布时间】:2016-06-13 06:16:09
【问题描述】:
我已经实现了一个 BST,它的 n 个节点中包含一个 Point (x,y) 类型的对象,树中的顺序是根据 X 的值。
我需要实现一个函数,将 X 的范围(x 左,x 右)作为输入 输出是 (编辑):Y在范围内的坐标之和(包括)。
通过“遍历”所有节点来做到这一点并不难,问题是我要求在 O(logn) 复杂性中做到这一点。
我考虑过初始化范围字段和 Y 的总和,但不知何故它不适用于插入和删除函数。 有任何想法吗?
【问题讨论】:
-
我很确定他们的意思是
O(log n + |right-left|),它仍然是O(log n),但变量更多。 -
另外,您可以将所有点的总和累加并缓存在每个节点中,这样您只需查看边缘即可快速找到范围的总和。