Skip to content

Commit 14ce155

Browse files
committed
add optional
1 parent 78cb429 commit 14ce155

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

data_structures/binary_tree/segment_tree_node.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
from typing import Optional
2+
13
class Node:
24
def __init__(self, start: int, end: int) -> None:
35
# Initializes a segment tree node with start and end indices
46
self.start = start
57
self.end = end
6-
self.value = None
7-
self.left = None
8-
self.right = None
9-
8+
self.value: Optional[int] = None
9+
self.left: Optional["Node"] = None
10+
self.right: Optional["Node"] = None
1011

1112
class SegmentTree:
1213
def __init__(self, nums: list[int], mode: str = "max") -> None:
@@ -21,9 +22,9 @@ def __init__(self, nums: list[int], mode: str = "max") -> None:
2122
self.mode = "max" # Default to max if invalid mode is given
2223

2324
# Build the tree from the input list
24-
self.root = self.build(0, self.size - 1, nums)
25+
self.root: Optional[Node] = self.build(0, self.size - 1, nums)
2526

26-
def build(self, start: int, end: int, nums: list[int]) -> Node:
27+
def build(self, start: int, end: int, nums: list[int]) -> Optional[Node]:
2728
"""
2829
Recursively builds the segment tree.
2930
:param start: Start index of the segment.
@@ -106,20 +107,7 @@ def query(
106107
elif self.mode == 'max':
107108
return max(self.query(node.left, start_index, end_index, start, mid), self.query(node.right, start_index, end_index, mid + 1, end))
108109
else:
109-
<<<<<<< HEAD
110110
return self.query(node.left, start_index, end_index, start, mid) + self.query(node.right, start_index, end_index, mid + 1, end)
111-
=======
112-
# Range spans both children
113-
if self.mode == "max":
114-
return max(
115-
self.query(node.left, start_index, end_index, start, mid),
116-
self.query(node.right, start_index, end_index, mid + 1, end),
117-
)
118-
else:
119-
return self.query(
120-
node.left, start_index, end_index, start, mid
121-
) + self.query(node.right, start_index, end_index, mid + 1, end)
122-
>>>>>>> cb5762c2a5f27c98c3a8958b8977ac23c9e2f0aa
123111

124112
def update(self, index: int, new_value: int) -> int:
125113
"""

0 commit comments

Comments
 (0)