Skip to content

Commit 15b1f62

Browse files
committed
modified variable names for left and right elements
1 parent 8682782 commit 15b1f62

File tree

1 file changed

+26
-22
lines changed

1 file changed

+26
-22
lines changed

data_structures/binary_tree/lazy_segment_tree.py

+26-22
Original file line numberDiff line numberDiff line change
@@ -19,68 +19,72 @@ def left(self, idx: int) -> int:
1919
def right(self, idx: int) -> int:
2020
return idx * 2 + 1
2121

22-
def build(self, idx: int, l: int, r: int, A: List[int]) -> None: # noqa: E741
23-
if l == r: # noqa: E741
24-
self.st[idx] = A[l - 1]
22+
def build(
23+
self, idx: int, left_element: int, right_element: int, A: List[int]
24+
) -> None:
25+
if left_element == right_element:
26+
self.st[idx] = A[left_element - 1]
2527
else:
26-
mid = (l + r) // 2
27-
self.build(self.left(idx), l, mid, A)
28-
self.build(self.right(idx), mid + 1, r, A)
28+
mid = (left_element + right_element) // 2
29+
self.build(self.left(idx), left_element, mid, A)
30+
self.build(self.right(idx), mid + 1, right_element, A)
2931
self.st[idx] = max(self.st[self.left(idx)], self.st[self.right(idx)])
3032

3133
# update with O(lg N) (Normal segment tree without lazy update will take O(Nlg N)
3234
# for each update)
3335
def update(
34-
self, idx: int, l: int, r: int, a: int, b: int, val: int
35-
) -> bool: # noqa: E741
36+
self, idx: int, left_element: int, right_element: int, a: int, b: int, val: int
37+
) -> bool:
3638
"""
3739
update(1, 1, N, a, b, v) for update val v to [a,b]
3840
"""
3941
if self.flag[idx] is True:
4042
self.st[idx] = self.lazy[idx]
4143
self.flag[idx] = False
42-
if l != r: # noqa: E741
44+
if left_element != right_element:
4345
self.lazy[self.left(idx)] = self.lazy[idx]
4446
self.lazy[self.right(idx)] = self.lazy[idx]
4547
self.flag[self.left(idx)] = True
4648
self.flag[self.right(idx)] = True
4749

48-
if r < a or l > b:
50+
if right_element < a or left_element > b:
4951
return True
50-
if l >= a and r <= b: # noqa: E741
52+
if left_element >= a and right_element <= b:
5153
self.st[idx] = val
52-
if l != r: # noqa: E741
54+
if left_element != right_element:
5355
self.lazy[self.left(idx)] = val
5456
self.lazy[self.right(idx)] = val
5557
self.flag[self.left(idx)] = True
5658
self.flag[self.right(idx)] = True
5759
return True
58-
mid = (l + r) // 2
59-
self.update(self.left(idx), l, mid, a, b, val)
60-
self.update(self.right(idx), mid + 1, r, a, b, val)
60+
mid = (left_element + right_element) // 2
61+
self.update(self.left(idx), left_element, mid, a, b, val)
62+
self.update(self.right(idx), mid + 1, right_element, a, b, val)
6163
self.st[idx] = max(self.st[self.left(idx)], self.st[self.right(idx)])
6264
return True
6365

6466
# query with O(lg N)
65-
def query(self, idx: int, l: int, r: int, a: int, b: int) -> int: # noqa: E741
67+
def query(
68+
self, idx: int, left_element: int, right_element: int, a: int, b: int
69+
) -> int:
6670
"""
6771
query(1, 1, N, a, b) for query max of [a,b]
6872
"""
6973
if self.flag[idx] is True:
7074
self.st[idx] = self.lazy[idx]
7175
self.flag[idx] = False
72-
if l != r: # noqa: E741
76+
if left_element != right_element:
7377
self.lazy[self.left(idx)] = self.lazy[idx]
7478
self.lazy[self.right(idx)] = self.lazy[idx]
7579
self.flag[self.left(idx)] = True
7680
self.flag[self.right(idx)] = True
77-
if r < a or l > b:
81+
if right_element < a or left_element > b:
7882
return -math.inf
79-
if l >= a and r <= b: # noqa: E741
83+
if left_element >= a and right_element <= b:
8084
return self.st[idx]
81-
mid = (l + r) // 2
82-
q1 = self.query(self.left(idx), l, mid, a, b)
83-
q2 = self.query(self.right(idx), mid + 1, r, a, b)
85+
mid = (left_element + right_element) // 2
86+
q1 = self.query(self.left(idx), left_element, mid, a, b)
87+
q2 = self.query(self.right(idx), mid + 1, right_element, a, b)
8488
return max(q1, q2)
8589

8690
def showData(self) -> None:

0 commit comments

Comments
 (0)