data-structure-typed 2.5.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/.vitepress/cache/deps_temp_51f5f1b0/chunk-7OIKW5WK.js +12984 -0
  2. package/.vitepress/cache/deps_temp_51f5f1b0/package.json +3 -0
  3. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vue_devtools-api.js +4505 -0
  4. package/.vitepress/cache/deps_temp_51f5f1b0/vitepress___@vueuse_core.js +9731 -0
  5. package/.vitepress/cache/deps_temp_51f5f1b0/vue.js +347 -0
  6. package/CHANGELOG.md +3 -1
  7. package/README.md +63 -26
  8. package/dist/cjs/binary-tree.cjs +23698 -0
  9. package/dist/cjs/graph.cjs +5236 -0
  10. package/dist/cjs/hash.cjs +1262 -0
  11. package/dist/cjs/heap.cjs +1540 -0
  12. package/dist/cjs/index.cjs +28244 -14795
  13. package/dist/cjs/linked-list.cjs +4370 -0
  14. package/dist/cjs/matrix.cjs +1042 -0
  15. package/dist/cjs/priority-queue.cjs +1314 -0
  16. package/dist/cjs/queue.cjs +4090 -0
  17. package/dist/cjs/stack.cjs +861 -0
  18. package/dist/cjs/trie.cjs +1173 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +23730 -0
  20. package/dist/cjs-legacy/graph.cjs +5234 -0
  21. package/dist/cjs-legacy/hash.cjs +1262 -0
  22. package/dist/cjs-legacy/heap.cjs +1537 -0
  23. package/dist/cjs-legacy/index.cjs +28239 -14790
  24. package/dist/cjs-legacy/linked-list.cjs +4376 -0
  25. package/dist/cjs-legacy/matrix.cjs +1045 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1312 -0
  27. package/dist/cjs-legacy/queue.cjs +4088 -0
  28. package/dist/cjs-legacy/stack.cjs +861 -0
  29. package/dist/cjs-legacy/trie.cjs +1172 -0
  30. package/dist/esm/binary-tree.mjs +23683 -0
  31. package/dist/esm/graph.mjs +5223 -0
  32. package/dist/esm/hash.mjs +1259 -0
  33. package/dist/esm/heap.mjs +1534 -0
  34. package/dist/esm/index.mjs +28242 -14796
  35. package/dist/esm/linked-list.mjs +4363 -0
  36. package/dist/esm/matrix.mjs +1038 -0
  37. package/dist/esm/priority-queue.mjs +1310 -0
  38. package/dist/esm/queue.mjs +4086 -0
  39. package/dist/esm/stack.mjs +859 -0
  40. package/dist/esm/trie.mjs +1170 -0
  41. package/dist/esm-legacy/binary-tree.mjs +23715 -0
  42. package/dist/esm-legacy/graph.mjs +5221 -0
  43. package/dist/esm-legacy/hash.mjs +1259 -0
  44. package/dist/esm-legacy/heap.mjs +1531 -0
  45. package/dist/esm-legacy/index.mjs +28237 -14791
  46. package/dist/esm-legacy/linked-list.mjs +4369 -0
  47. package/dist/esm-legacy/matrix.mjs +1041 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1308 -0
  49. package/dist/esm-legacy/queue.mjs +4084 -0
  50. package/dist/esm-legacy/stack.mjs +859 -0
  51. package/dist/esm-legacy/trie.mjs +1169 -0
  52. package/dist/types/data-structures/base/index.d.ts +1 -0
  53. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  54. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  55. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +240 -0
  56. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +280 -0
  57. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +502 -2
  58. package/dist/types/data-structures/binary-tree/bst.d.ts +481 -1
  59. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +380 -0
  60. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +120 -1
  61. package/dist/types/data-structures/binary-tree/tree-map.d.ts +2764 -384
  62. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2753 -353
  63. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2241 -321
  64. package/dist/types/data-structures/binary-tree/tree-set.d.ts +2554 -274
  65. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  66. package/dist/types/data-structures/graph/directed-graph.d.ts +200 -0
  67. package/dist/types/data-structures/graph/undirected-graph.d.ts +180 -0
  68. package/dist/types/data-structures/hash/hash-map.d.ts +230 -10
  69. package/dist/types/data-structures/heap/heap.d.ts +280 -0
  70. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +343 -3
  71. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +303 -3
  72. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +362 -2
  73. package/dist/types/data-structures/matrix/matrix.d.ts +160 -0
  74. package/dist/types/data-structures/queue/deque.d.ts +304 -4
  75. package/dist/types/data-structures/queue/queue.d.ts +240 -0
  76. package/dist/types/data-structures/stack/stack.d.ts +200 -0
  77. package/dist/types/data-structures/trie/trie.d.ts +244 -4
  78. package/dist/types/interfaces/graph.d.ts +1 -1
  79. package/dist/types/types/common.d.ts +2 -2
  80. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  81. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  82. package/dist/types/types/utils/validate-type.d.ts +4 -4
  83. package/dist/umd/data-structure-typed.js +28022 -14573
  84. package/dist/umd/data-structure-typed.min.js +9 -3
  85. package/docs-site-docusaurus/README.md +41 -0
  86. package/docs-site-docusaurus/docs/api/README.md +52 -0
  87. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  88. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  89. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  90. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  91. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  92. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  93. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  94. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  95. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  96. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  97. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  98. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  99. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  100. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  101. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  102. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  103. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  104. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  105. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  106. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  107. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  108. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  109. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  110. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  111. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  112. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  113. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  114. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  115. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  116. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  117. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  118. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  119. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  120. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  121. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  122. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  123. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  124. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  125. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  126. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  127. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  128. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  129. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  130. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  131. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  132. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  133. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  134. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  135. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  136. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  137. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  138. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  139. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  140. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  141. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  142. package/docs-site-docusaurus/package-lock.json +18667 -0
  143. package/docs-site-docusaurus/package.json +50 -0
  144. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  145. package/docs-site-docusaurus/sidebars.ts +23 -0
  146. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  147. package/docs-site-docusaurus/src/css/custom.css +96 -0
  148. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  149. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  150. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  151. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  152. package/docs-site-docusaurus/static/.nojekyll +0 -0
  153. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  154. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  155. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  156. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  157. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  158. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  159. package/docs-site-docusaurus/static/img/logo.png +0 -0
  160. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  161. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  162. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  163. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  164. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  165. package/docs-site-docusaurus/static/robots.txt +4 -0
  166. package/docs-site-docusaurus/typedoc.json +23 -0
  167. package/package.json +106 -10
  168. package/src/data-structures/base/index.ts +1 -0
  169. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  170. package/src/data-structures/base/linear-base.ts +3 -3
  171. package/src/data-structures/binary-tree/avl-tree.ts +240 -0
  172. package/src/data-structures/binary-tree/binary-indexed-tree.ts +281 -1
  173. package/src/data-structures/binary-tree/binary-tree.ts +502 -2
  174. package/src/data-structures/binary-tree/bst.ts +481 -1
  175. package/src/data-structures/binary-tree/red-black-tree.ts +380 -0
  176. package/src/data-structures/binary-tree/segment-tree.ts +121 -2
  177. package/src/data-structures/binary-tree/tree-map.ts +2862 -482
  178. package/src/data-structures/binary-tree/tree-multi-map.ts +2963 -563
  179. package/src/data-structures/binary-tree/tree-multi-set.ts +2399 -479
  180. package/src/data-structures/binary-tree/tree-set.ts +2685 -405
  181. package/src/data-structures/graph/abstract-graph.ts +4 -4
  182. package/src/data-structures/graph/directed-graph.ts +200 -0
  183. package/src/data-structures/graph/undirected-graph.ts +180 -0
  184. package/src/data-structures/hash/hash-map.ts +235 -15
  185. package/src/data-structures/heap/heap.ts +280 -0
  186. package/src/data-structures/linked-list/doubly-linked-list.ts +343 -3
  187. package/src/data-structures/linked-list/singly-linked-list.ts +303 -3
  188. package/src/data-structures/linked-list/skip-linked-list.ts +362 -2
  189. package/src/data-structures/matrix/matrix.ts +161 -1
  190. package/src/data-structures/queue/deque.ts +305 -5
  191. package/src/data-structures/queue/queue.ts +240 -0
  192. package/src/data-structures/stack/stack.ts +200 -0
  193. package/src/data-structures/trie/trie.ts +245 -5
  194. package/src/interfaces/graph.ts +1 -1
  195. package/src/types/common.ts +2 -2
  196. package/src/types/data-structures/heap/heap.ts +1 -0
  197. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  198. package/src/types/utils/validate-type.ts +4 -4
  199. package/vercel.json +6 -0
  200. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  201. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  202. package/dist/leetcode/avl-tree.mjs +0 -2720
  203. package/dist/leetcode/binary-tree.mjs +0 -1594
  204. package/dist/leetcode/bst.mjs +0 -2398
  205. package/dist/leetcode/deque.mjs +0 -683
  206. package/dist/leetcode/directed-graph.mjs +0 -1733
  207. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  208. package/dist/leetcode/hash-map.mjs +0 -493
  209. package/dist/leetcode/heap.mjs +0 -542
  210. package/dist/leetcode/max-heap.mjs +0 -375
  211. package/dist/leetcode/max-priority-queue.mjs +0 -383
  212. package/dist/leetcode/min-heap.mjs +0 -363
  213. package/dist/leetcode/min-priority-queue.mjs +0 -371
  214. package/dist/leetcode/priority-queue.mjs +0 -363
  215. package/dist/leetcode/queue.mjs +0 -943
  216. package/dist/leetcode/red-black-tree.mjs +0 -2765
  217. package/dist/leetcode/singly-linked-list.mjs +0 -754
  218. package/dist/leetcode/stack.mjs +0 -217
  219. package/dist/leetcode/tree-counter.mjs +0 -3039
  220. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  221. package/dist/leetcode/trie.mjs +0 -413
  222. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -0,0 +1,372 @@
1
+ [**data-structure-typed**](../README.md)
2
+
3
+ ***
4
+
5
+ [data-structure-typed](../README.md) / SegmentTree
6
+
7
+ # Class: SegmentTree\<E\>
8
+
9
+ Defined in: [data-structures/binary-tree/segment-tree.ts:30](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L30)
10
+
11
+ Generic Segment Tree with flat array internals.
12
+
13
+ Supports any associative merge operation (sum, min, max, gcd, etc.).
14
+ Reference: AtCoder Library segtree<S, op, e>.
15
+
16
+ ## Example
17
+
18
+ ```ts
19
+ const sumTree = SegmentTree.sum([1, 2, 3, 4, 5]);
20
+ sumTree.query(1, 3); // 9 (2+3+4)
21
+ sumTree.update(2, 10); // [1, 2, 10, 4, 5]
22
+ sumTree.query(1, 3); // 16 (2+10+4)
23
+
24
+ const minTree = SegmentTree.min([5, 2, 8, 1, 9]);
25
+ minTree.query(0, 4); // 1
26
+ ```
27
+
28
+ ## Type Parameters
29
+
30
+ ### E
31
+
32
+ `E` = `number`
33
+
34
+ ## Implements
35
+
36
+ - `Iterable`\<`E`\>
37
+
38
+ ## Methods
39
+
40
+ ### \[iterator\]()
41
+
42
+ ```ts
43
+ iterator: IterableIterator<E>;
44
+ ```
45
+
46
+ Defined in: [data-structures/binary-tree/segment-tree.ts:520](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L520)
47
+
48
+ Iterates over leaf values in index order.
49
+
50
+ #### Returns
51
+
52
+ `IterableIterator`\<`E`\>
53
+
54
+ #### Implementation of
55
+
56
+ ```ts
57
+ Iterable.[iterator]
58
+ ```
59
+
60
+ ***
61
+
62
+ ### get()
63
+
64
+ ```ts
65
+ get(index): E;
66
+ ```
67
+
68
+ Defined in: [data-structures/binary-tree/segment-tree.ts:316](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L316)
69
+
70
+ Get element at index.
71
+ Time: O(1)
72
+
73
+ *
74
+
75
+ #### Parameters
76
+
77
+ ##### index
78
+
79
+ `number`
80
+
81
+ #### Returns
82
+
83
+ `E`
84
+
85
+ #### Example
86
+
87
+ ```ts
88
+ // Point access on segment tree
89
+ const st = SegmentTree.sum([10, 20, 30, 40]);
90
+ console.log(st.get(0)); // 10;
91
+ console.log(st.get(2)); // 30;
92
+ ```
93
+
94
+ ***
95
+
96
+ ### maxRight()
97
+
98
+ ```ts
99
+ maxRight(left, predicate): number;
100
+ ```
101
+
102
+ Defined in: [data-structures/binary-tree/segment-tree.ts:365](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L365)
103
+
104
+ Find the largest r such that predicate(query(left, r)) is true.
105
+ Returns left-1 if predicate(identity) is false.
106
+ Returns n-1 if predicate holds for the entire range [left, n-1].
107
+ Time: O(log n)
108
+
109
+ *
110
+
111
+ #### Parameters
112
+
113
+ ##### left
114
+
115
+ `number`
116
+
117
+ ##### predicate
118
+
119
+ (`segValue`) => `boolean`
120
+
121
+ #### Returns
122
+
123
+ `number`
124
+
125
+ #### Example
126
+
127
+ ```ts
128
+ // Find rightmost position where predicate holds
129
+ // Prefix sums: find the rightmost index where prefix sum < 10
130
+ const st = SegmentTree.sum([3, 1, 4, 1, 5]);
131
+ // maxRight(0, sum => sum < 10) — prefix [3,4,8,9,14]
132
+ // sum < 10 holds through index 3 (prefix=9), fails at 4 (prefix=14)
133
+ const result = st.maxRight(0, sum => sum < 10);
134
+ console.log(result); // 3;
135
+ ```
136
+
137
+ ***
138
+
139
+ ### minLeft()
140
+
141
+ ```ts
142
+ minLeft(right, predicate): number;
143
+ ```
144
+
145
+ Defined in: [data-structures/binary-tree/segment-tree.ts:449](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L449)
146
+
147
+ Find the smallest l such that predicate(query(l, right)) is true.
148
+ Returns right+1 if predicate(identity) is false.
149
+ Returns 0 if predicate holds for the entire range [0, right].
150
+ Time: O(log n)
151
+
152
+ *
153
+
154
+ #### Parameters
155
+
156
+ ##### right
157
+
158
+ `number`
159
+
160
+ ##### predicate
161
+
162
+ (`segValue`) => `boolean`
163
+
164
+ #### Returns
165
+
166
+ `number`
167
+
168
+ #### Example
169
+
170
+ ```ts
171
+ // Find leftmost position where predicate holds
172
+ const st = SegmentTree.sum([3, 1, 4, 1, 5]);
173
+ // minLeft(5, sum => sum < 7) — suffix sums from right
174
+ // From right: [5]=5 < 7, [1,5]=6 < 7, [4,1,5]=10 ≥ 7
175
+ const result = st.minLeft(5, sum => sum < 7);
176
+ console.log(result); // 3;
177
+ ```
178
+
179
+ ***
180
+
181
+ ### query()
182
+
183
+ ```ts
184
+ query(start, end): E;
185
+ ```
186
+
187
+ Defined in: [data-structures/binary-tree/segment-tree.ts:253](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L253)
188
+
189
+ Range query: returns merger result over [start, end] (inclusive).
190
+ Time: O(log n)
191
+
192
+ *
193
+
194
+ #### Parameters
195
+
196
+ ##### start
197
+
198
+ `number`
199
+
200
+ ##### end
201
+
202
+ `number`
203
+
204
+ #### Returns
205
+
206
+ `E`
207
+
208
+ #### Example
209
+
210
+ ```ts
211
+ // Range sum query on an array
212
+ const tree = SegmentTree.sum([1, 3, 5, 7, 9, 11]);
213
+
214
+ // Query sum of range [1, 3] → 3 + 5 + 7 = 15
215
+ console.log(tree.query(1, 3)); // 15;
216
+
217
+ // Query entire range
218
+ console.log(tree.query(0, 5)); // 36;
219
+
220
+ // Query single element
221
+ console.log(tree.query(2, 2)); // 5;
222
+ ```
223
+
224
+ ***
225
+
226
+ ### update()
227
+
228
+ ```ts
229
+ update(index, value): void;
230
+ ```
231
+
232
+ Defined in: [data-structures/binary-tree/segment-tree.ts:195](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L195)
233
+
234
+ Point update: set element at index to value.
235
+ Time: O(log n)
236
+
237
+ *
238
+
239
+ #### Parameters
240
+
241
+ ##### index
242
+
243
+ `number`
244
+
245
+ ##### value
246
+
247
+ `E`
248
+
249
+ #### Returns
250
+
251
+ `void`
252
+
253
+ #### Example
254
+
255
+ ```ts
256
+ // Dynamic range sum with updates
257
+ // Monthly revenue data (in thousands)
258
+ const revenue = [120, 95, 140, 110, 85, 130, 150, 100, 160, 125, 90, 175];
259
+ const tree = SegmentTree.sum(revenue);
260
+
261
+ // Q1 revenue (Jan-Mar)
262
+ console.log(tree.query(0, 2)); // 355;
263
+
264
+ // Update March revenue from 140 to 200
265
+ tree.update(2, 200);
266
+
267
+ // Q1 revenue after update
268
+ console.log(tree.query(0, 2)); // 415;
269
+
270
+ // H1 revenue (Jan-Jun)
271
+ console.log(tree.query(0, 5)); // 740;
272
+ ```
273
+
274
+ ***
275
+
276
+ ### max()
277
+
278
+ ```ts
279
+ static max(elements): SegmentTree<number>;
280
+ ```
281
+
282
+ Defined in: [data-structures/binary-tree/segment-tree.ts:137](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L137)
283
+
284
+ Create a max segment tree.
285
+
286
+ #### Parameters
287
+
288
+ ##### elements
289
+
290
+ `number`[]
291
+
292
+ #### Returns
293
+
294
+ `SegmentTree`\<`number`\>
295
+
296
+ #### Example
297
+
298
+ ```ts
299
+ const st = SegmentTree.max([3, 1, 4, 1, 5]);
300
+ st.query(1, 4); // 5
301
+ ```
302
+
303
+ ***
304
+
305
+ ### min()
306
+
307
+ ```ts
308
+ static min(elements): SegmentTree<number>;
309
+ ```
310
+
311
+ Defined in: [data-structures/binary-tree/segment-tree.ts:122](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L122)
312
+
313
+ Create a min segment tree.
314
+
315
+ *
316
+
317
+ #### Parameters
318
+
319
+ ##### elements
320
+
321
+ `number`[]
322
+
323
+ #### Returns
324
+
325
+ `SegmentTree`\<`number`\>
326
+
327
+ #### Example
328
+
329
+ ```ts
330
+ // Temperature monitoring with range queries
331
+ // Hourly temperatures for a day (24 readings)
332
+ const temps = [18, 17, 16, 15, 16, 18, 21, 24, 27, 29, 31, 32, 33, 32, 31, 29, 27, 25, 23, 21, 20, 19, 18, 17];
333
+ const tree = SegmentTree.sum(temps);
334
+
335
+ // Average temperature during work hours (9-17)
336
+ const workSum = tree.query(9, 17);
337
+ console.log(workSum / 9); // toBeCloseTo;
338
+
339
+ // Sum of morning temps (6-11)
340
+ console.log(tree.query(6, 11)); // 164;
341
+ ```
342
+
343
+ ***
344
+
345
+ ### sum()
346
+
347
+ ```ts
348
+ static sum(elements): SegmentTree<number>;
349
+ ```
350
+
351
+ Defined in: [data-structures/binary-tree/segment-tree.ts:72](https://github.com/zrwusa/data-structure-typed/blob/2f6ceb3aee852228efc88b111e19c0809753e805/src/data-structures/binary-tree/segment-tree.ts#L72)
352
+
353
+ Create a sum segment tree.
354
+
355
+ #### Parameters
356
+
357
+ ##### elements
358
+
359
+ `number`[]
360
+
361
+ #### Returns
362
+
363
+ `SegmentTree`\<`number`\>
364
+
365
+ #### Example
366
+
367
+ ```ts
368
+ const st = SegmentTree.sum([1, 2, 3, 4, 5]);
369
+ st.query(0, 2); // 6 (1+2+3)
370
+ st.update(1, 10);
371
+ st.query(0, 2); // 14 (1+10+3)
372
+ ```