@@ -16,40 +16,36 @@ def __init__(self, start, end, val, left=None, right=None):
1616 self .left = left
1717 self .right = right
1818
19- def __str__ (self ):
20- return f"val: { self .val } , start: { self .start } , end: { self .end } "
19+ def __repr__ (self ):
20+ return f"SegmentTreeNode(start= { self .start } , end= { self .end } , val= { self .val } ) "
2121
2222
2323class SegmentTree :
2424 """
2525 >>> import operator
2626 >>> num_arr = SegmentTree([2, 1, 5, 3, 4], operator.add)
27- >>> for node in num_arr.traverse():
28- ... print(node)
29- ...
30- val: 15, start: 0, end: 4
31- val: 8, start: 0, end: 2
32- val: 7, start: 3, end: 4
33- val: 3, start: 0, end: 1
34- val: 5, start: 2, end: 2
35- val: 3, start: 3, end: 3
36- val: 4, start: 4, end: 4
37- val: 2, start: 0, end: 0
38- val: 1, start: 1, end: 1
27+ >>> tuple(num_arr.traverse()) # doctest: +NORMALIZE_WHITESPACE
28+ (SegmentTreeNode(start=0, end=4, val=15),
29+ SegmentTreeNode(start=0, end=2, val=8),
30+ SegmentTreeNode(start=3, end=4, val=7),
31+ SegmentTreeNode(start=0, end=1, val=3),
32+ SegmentTreeNode(start=2, end=2, val=5),
33+ SegmentTreeNode(start=3, end=3, val=3),
34+ SegmentTreeNode(start=4, end=4, val=4),
35+ SegmentTreeNode(start=0, end=0, val=2),
36+ SegmentTreeNode(start=1, end=1, val=1))
3937 >>>
4038 >>> num_arr.update(1, 5)
41- >>> for node in num_arr.traverse():
42- ... print(node)
43- ...
44- val: 19, start: 0, end: 4
45- val: 12, start: 0, end: 2
46- val: 7, start: 3, end: 4
47- val: 7, start: 0, end: 1
48- val: 5, start: 2, end: 2
49- val: 3, start: 3, end: 3
50- val: 4, start: 4, end: 4
51- val: 2, start: 0, end: 0
52- val: 5, start: 1, end: 1
39+ >>> tuple(num_arr.traverse()) # doctest: +NORMALIZE_WHITESPACE
40+ (SegmentTreeNode(start=0, end=4, val=19),
41+ SegmentTreeNode(start=0, end=2, val=12),
42+ SegmentTreeNode(start=3, end=4, val=7),
43+ SegmentTreeNode(start=0, end=1, val=7),
44+ SegmentTreeNode(start=2, end=2, val=5),
45+ SegmentTreeNode(start=3, end=3, val=3),
46+ SegmentTreeNode(start=4, end=4, val=4),
47+ SegmentTreeNode(start=0, end=0, val=2),
48+ SegmentTreeNode(start=1, end=1, val=5))
5349 >>>
5450 >>> num_arr.query_range(3, 4)
5551 7
@@ -62,29 +58,29 @@ class SegmentTree:
6258 >>> for node in max_arr.traverse():
6359 ... print(node)
6460 ...
65- val: 5, start: 0, end: 4
66- val: 5, start: 0, end: 2
67- val: 4, start: 3, end: 4
68- val: 2, start: 0, end: 1
69- val: 5, start: 2, end: 2
70- val: 3, start: 3, end: 3
71- val: 4, start: 4, end: 4
72- val: 2, start: 0, end: 0
73- val: 1, start: 1, end: 1
61+ SegmentTreeNode( start= 0, end=4, val=5)
62+ SegmentTreeNode( start= 0, end=2, val=5)
63+ SegmentTreeNode( start= 3, end=4, val=4)
64+ SegmentTreeNode( start= 0, end=1, val=2)
65+ SegmentTreeNode( start= 2, end=2, val=5)
66+ SegmentTreeNode(start= 3, end= 3, val=3)
67+ SegmentTreeNode(start= 4, end= 4, val=4)
68+ SegmentTreeNode( start= 0, end=0, val=2)
69+ SegmentTreeNode(start= 1, end= 1, val=1)
7470 >>>
7571 >>> max_arr.update(1, 5)
7672 >>> for node in max_arr.traverse():
7773 ... print(node)
7874 ...
79- val: 5, start: 0, end: 4
80- val: 5, start: 0, end: 2
81- val: 4, start: 3, end: 4
82- val: 5, start: 0, end: 1
83- val: 5, start: 2, end: 2
84- val: 3, start: 3, end: 3
85- val: 4, start: 4, end: 4
86- val: 2, start: 0, end: 0
87- val: 5, start: 1, end: 1
75+ SegmentTreeNode( start= 0, end=4, val=5)
76+ SegmentTreeNode( start= 0, end=2, val=5)
77+ SegmentTreeNode( start= 3, end=4, val=4)
78+ SegmentTreeNode( start= 0, end=1, val=5)
79+ SegmentTreeNode( start= 2, end=2, val=5)
80+ SegmentTreeNode(start= 3, end= 3, val=3)
81+ SegmentTreeNode(start= 4, end= 4, val=4)
82+ SegmentTreeNode( start= 0, end=0, val=2)
83+ SegmentTreeNode( start= 1, end=1, val=5)
8884 >>>
8985 >>> max_arr.query_range(3, 4)
9086 4
@@ -97,29 +93,29 @@ class SegmentTree:
9793 >>> for node in min_arr.traverse():
9894 ... print(node)
9995 ...
100- val: 1, start: 0, end: 4
101- val: 1, start: 0, end: 2
102- val: 3, start: 3, end: 4
103- val: 1, start: 0, end: 1
104- val: 5, start: 2, end: 2
105- val: 3, start: 3, end: 3
106- val: 4, start: 4, end: 4
107- val: 2, start: 0, end: 0
108- val: 1, start: 1, end: 1
96+ SegmentTreeNode( start= 0, end=4, val=1)
97+ SegmentTreeNode( start= 0, end=2, val=1)
98+ SegmentTreeNode( start= 3, end=4, val=3)
99+ SegmentTreeNode( start= 0, end=1, val=1)
100+ SegmentTreeNode( start= 2, end=2, val=5)
101+ SegmentTreeNode(start= 3, end= 3, val=3)
102+ SegmentTreeNode(start= 4, end= 4, val=4)
103+ SegmentTreeNode( start= 0, end=0, val=2)
104+ SegmentTreeNode(start= 1, end= 1, val=1)
109105 >>>
110106 >>> min_arr.update(1, 5)
111107 >>> for node in min_arr.traverse():
112108 ... print(node)
113109 ...
114- val: 2, start: 0, end: 4
115- val: 2, start: 0, end: 2
116- val: 3, start: 3, end: 4
117- val: 2, start: 0, end: 1
118- val: 5, start: 2, end: 2
119- val: 3, start: 3, end: 3
120- val: 4, start: 4, end: 4
121- val: 2, start: 0, end: 0
122- val: 5, start: 1, end: 1
110+ SegmentTreeNode( start= 0, end=4, val=2)
111+ SegmentTreeNode( start= 0, end=2, val=2)
112+ SegmentTreeNode( start= 3, end=4, val=3)
113+ SegmentTreeNode( start= 0, end=1, val=2)
114+ SegmentTreeNode( start= 2, end=2, val=5)
115+ SegmentTreeNode(start= 3, end= 3, val=3)
116+ SegmentTreeNode(start= 4, end= 4, val=4)
117+ SegmentTreeNode( start= 0, end=0, val=2)
118+ SegmentTreeNode( start= 1, end=1, val=5)
123119 >>>
124120 >>> min_arr.query_range(3, 4)
125121 3
@@ -128,7 +124,6 @@ class SegmentTree:
128124 >>> min_arr.query_range(1, 3)
129125 3
130126 >>>
131-
132127 """
133128
134129 def __init__ (self , collection : Sequence , function ):
0 commit comments