1+ from typing import Optional
2+
13class 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
1112class 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