@@ -16,40 +16,36 @@ def __init__(self, start, end, val, left=None, right=None):
16
16
self .left = left
17
17
self .right = right
18
18
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 } ) "
21
21
22
22
23
23
class SegmentTree :
24
24
"""
25
25
>>> import operator
26
26
>>> 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))
39
37
>>>
40
38
>>> 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))
53
49
>>>
54
50
>>> num_arr.query_range(3, 4)
55
51
7
@@ -62,29 +58,29 @@ class SegmentTree:
62
58
>>> for node in max_arr.traverse():
63
59
... print(node)
64
60
...
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)
74
70
>>>
75
71
>>> max_arr.update(1, 5)
76
72
>>> for node in max_arr.traverse():
77
73
... print(node)
78
74
...
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)
88
84
>>>
89
85
>>> max_arr.query_range(3, 4)
90
86
4
@@ -97,29 +93,29 @@ class SegmentTree:
97
93
>>> for node in min_arr.traverse():
98
94
... print(node)
99
95
...
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)
109
105
>>>
110
106
>>> min_arr.update(1, 5)
111
107
>>> for node in min_arr.traverse():
112
108
... print(node)
113
109
...
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)
123
119
>>>
124
120
>>> min_arr.query_range(3, 4)
125
121
3
@@ -128,7 +124,6 @@ class SegmentTree:
128
124
>>> min_arr.query_range(1, 3)
129
125
3
130
126
>>>
131
-
132
127
"""
133
128
134
129
def __init__ (self , collection : Sequence , function ):
0 commit comments