1 parent d10f05b commit 8fabe29Copy full SHA for 8fabe29
src/codeTemplates/segmentTree.js
@@ -295,8 +295,10 @@ class SegmentTree:
295
node.add = v # 做了一个标记
296
return
297
self.__pushdown(node) # 动态开点。为子节点赋值,这个值就从 add 传递过来
298
- self.update(l, r, v, node.left)
299
- self.update(l, r, v, node.right)
+ if l <= node.m:
+ self.update(l, r, v, node.left)
300
+ if r > node.m:
301
+ self.update(l, r, v, node.right)
302
self.__pushup(node) # 动态开点结束后,修复当前节点的值
303
304
def query(self, l, r,node):
@@ -305,7 +307,12 @@ class SegmentTree:
305
307
if l <= node.l and node.r <= r:
306
308
return node.v
309
- return self.query(l, r, node.left) + self.query(l, r, node.right)
310
+ ans = 0
311
312
+ ans += self.query(l, r, node.left)
313
314
+ ans += self.query(l, r, node.right)
315
+ return ans
316
317
def __pushdown(self,node):
318
if node.left is None:
0 commit comments