data-structure-typed 2.5.0 → 2.5.2

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 (246) 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 +5 -1
  7. package/README.md +124 -29
  8. package/dist/cjs/binary-tree.cjs +26282 -0
  9. package/dist/cjs/graph.cjs +5422 -0
  10. package/dist/cjs/hash.cjs +1310 -0
  11. package/dist/cjs/heap.cjs +1602 -0
  12. package/dist/cjs/index.cjs +31257 -14673
  13. package/dist/cjs/linked-list.cjs +4576 -0
  14. package/dist/cjs/matrix.cjs +1080 -0
  15. package/dist/cjs/priority-queue.cjs +1376 -0
  16. package/dist/cjs/queue.cjs +4264 -0
  17. package/dist/cjs/stack.cjs +907 -0
  18. package/dist/cjs/trie.cjs +1223 -0
  19. package/dist/cjs-legacy/binary-tree.cjs +26319 -0
  20. package/dist/cjs-legacy/graph.cjs +5420 -0
  21. package/dist/cjs-legacy/hash.cjs +1310 -0
  22. package/dist/cjs-legacy/heap.cjs +1599 -0
  23. package/dist/cjs-legacy/index.cjs +31268 -14679
  24. package/dist/cjs-legacy/linked-list.cjs +4582 -0
  25. package/dist/cjs-legacy/matrix.cjs +1083 -0
  26. package/dist/cjs-legacy/priority-queue.cjs +1374 -0
  27. package/dist/cjs-legacy/queue.cjs +4262 -0
  28. package/dist/cjs-legacy/stack.cjs +907 -0
  29. package/dist/cjs-legacy/trie.cjs +1222 -0
  30. package/dist/esm/binary-tree.mjs +26267 -0
  31. package/dist/esm/graph.mjs +5409 -0
  32. package/dist/esm/hash.mjs +1307 -0
  33. package/dist/esm/heap.mjs +1596 -0
  34. package/dist/esm/index.mjs +31254 -14674
  35. package/dist/esm/linked-list.mjs +4569 -0
  36. package/dist/esm/matrix.mjs +1076 -0
  37. package/dist/esm/priority-queue.mjs +1372 -0
  38. package/dist/esm/queue.mjs +4260 -0
  39. package/dist/esm/stack.mjs +905 -0
  40. package/dist/esm/trie.mjs +1220 -0
  41. package/dist/esm-legacy/binary-tree.mjs +26304 -0
  42. package/dist/esm-legacy/graph.mjs +5407 -0
  43. package/dist/esm-legacy/hash.mjs +1307 -0
  44. package/dist/esm-legacy/heap.mjs +1593 -0
  45. package/dist/esm-legacy/index.mjs +31265 -14680
  46. package/dist/esm-legacy/linked-list.mjs +4575 -0
  47. package/dist/esm-legacy/matrix.mjs +1079 -0
  48. package/dist/esm-legacy/priority-queue.mjs +1370 -0
  49. package/dist/esm-legacy/queue.mjs +4258 -0
  50. package/dist/esm-legacy/stack.mjs +905 -0
  51. package/dist/esm-legacy/trie.mjs +1219 -0
  52. package/dist/types/common/error.d.ts +9 -0
  53. package/dist/types/common/index.d.ts +1 -1
  54. package/dist/types/data-structures/base/index.d.ts +1 -0
  55. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  56. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  57. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +288 -0
  58. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +336 -0
  59. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +618 -18
  60. package/dist/types/data-structures/binary-tree/bst.d.ts +676 -1
  61. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +456 -0
  62. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +144 -1
  63. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3307 -399
  64. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3285 -360
  65. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2674 -325
  66. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3072 -287
  67. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  68. package/dist/types/data-structures/graph/directed-graph.d.ts +240 -0
  69. package/dist/types/data-structures/graph/undirected-graph.d.ts +216 -0
  70. package/dist/types/data-structures/hash/hash-map.d.ts +274 -10
  71. package/dist/types/data-structures/heap/heap.d.ts +336 -0
  72. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +411 -3
  73. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +363 -3
  74. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +434 -2
  75. package/dist/types/data-structures/matrix/matrix.d.ts +192 -0
  76. package/dist/types/data-structures/queue/deque.d.ts +364 -4
  77. package/dist/types/data-structures/queue/queue.d.ts +288 -0
  78. package/dist/types/data-structures/stack/stack.d.ts +240 -0
  79. package/dist/types/data-structures/trie/trie.d.ts +292 -4
  80. package/dist/types/interfaces/graph.d.ts +1 -1
  81. package/dist/types/types/common.d.ts +2 -2
  82. package/dist/types/types/data-structures/binary-tree/bst.d.ts +1 -0
  83. package/dist/types/types/data-structures/binary-tree/tree-map.d.ts +5 -0
  84. package/dist/types/types/data-structures/binary-tree/tree-multi-set.d.ts +4 -0
  85. package/dist/types/types/data-structures/binary-tree/tree-set.d.ts +4 -0
  86. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  87. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  88. package/dist/types/types/utils/validate-type.d.ts +4 -4
  89. package/dist/umd/data-structure-typed.js +31196 -14608
  90. package/dist/umd/data-structure-typed.min.js +11 -5
  91. package/docs-site-docusaurus/README.md +41 -0
  92. package/docs-site-docusaurus/docs/api/README.md +52 -0
  93. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6644 -0
  94. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  95. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  96. package/docs-site-docusaurus/docs/api/classes/BST.md +6293 -0
  97. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  98. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  99. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  100. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  101. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  102. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  103. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  104. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  105. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  106. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  107. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  108. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  109. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  110. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  111. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  112. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  113. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  114. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  115. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  116. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  117. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  118. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  119. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  120. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  121. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  122. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  123. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  124. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  125. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6888 -0
  126. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  127. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  128. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  129. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  130. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  131. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1389 -0
  132. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1591 -0
  133. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1246 -0
  134. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  135. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  136. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  137. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  138. package/docs-site-docusaurus/docs/guide/architecture.md +615 -0
  139. package/docs-site-docusaurus/docs/guide/concepts.md +451 -0
  140. package/docs-site-docusaurus/docs/guide/faq.md +180 -0
  141. package/docs-site-docusaurus/docs/guide/guides.md +597 -0
  142. package/docs-site-docusaurus/docs/guide/installation.md +62 -0
  143. package/docs-site-docusaurus/docs/guide/integrations.md +825 -0
  144. package/docs-site-docusaurus/docs/guide/overview.md +645 -0
  145. package/docs-site-docusaurus/docs/guide/performance.md +835 -0
  146. package/docs-site-docusaurus/docs/guide/quick-start.md +104 -0
  147. package/docs-site-docusaurus/docs/guide/use-cases/_category_.json +6 -0
  148. package/docs-site-docusaurus/docs/guide/use-cases/array-sort-alternative.md +158 -0
  149. package/docs-site-docusaurus/docs/guide/use-cases/heap-vs-sorting.md +92 -0
  150. package/docs-site-docusaurus/docs/guide/use-cases/map-vs-treemap.md +151 -0
  151. package/docs-site-docusaurus/docs/guide/use-cases/priority-queue-typescript.md +113 -0
  152. package/docs-site-docusaurus/docs/guide/use-cases/treemap-javascript.md +151 -0
  153. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  154. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  155. package/docs-site-docusaurus/package-lock.json +18667 -0
  156. package/docs-site-docusaurus/package.json +50 -0
  157. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  158. package/docs-site-docusaurus/sidebars.ts +23 -0
  159. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  160. package/docs-site-docusaurus/src/css/custom.css +96 -0
  161. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  162. package/docs-site-docusaurus/src/pages/index.tsx +120 -0
  163. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  164. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  165. package/docs-site-docusaurus/static/.nojekyll +0 -0
  166. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  167. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  168. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  169. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  170. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  171. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  172. package/docs-site-docusaurus/static/img/logo.png +0 -0
  173. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  174. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  175. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  176. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  177. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  178. package/docs-site-docusaurus/static/llms.txt +37 -0
  179. package/docs-site-docusaurus/static/robots.txt +4 -0
  180. package/docs-site-docusaurus/typedoc.json +23 -0
  181. package/llms.txt +37 -0
  182. package/package.json +159 -55
  183. package/src/common/error.ts +19 -1
  184. package/src/common/index.ts +1 -1
  185. package/src/data-structures/base/index.ts +1 -0
  186. package/src/data-structures/base/iterable-element-base.ts +3 -2
  187. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  188. package/src/data-structures/base/linear-base.ts +3 -3
  189. package/src/data-structures/binary-tree/avl-tree.ts +287 -0
  190. package/src/data-structures/binary-tree/binary-indexed-tree.ts +327 -5
  191. package/src/data-structures/binary-tree/binary-tree.ts +581 -6
  192. package/src/data-structures/binary-tree/bst.ts +922 -7
  193. package/src/data-structures/binary-tree/red-black-tree.ts +453 -0
  194. package/src/data-structures/binary-tree/segment-tree.ts +139 -2
  195. package/src/data-structures/binary-tree/tree-map.ts +3300 -495
  196. package/src/data-structures/binary-tree/tree-multi-map.ts +3384 -563
  197. package/src/data-structures/binary-tree/tree-multi-set.ts +2757 -493
  198. package/src/data-structures/binary-tree/tree-set.ts +3122 -440
  199. package/src/data-structures/graph/abstract-graph.ts +6 -6
  200. package/src/data-structures/graph/directed-graph.ts +230 -0
  201. package/src/data-structures/graph/undirected-graph.ts +207 -0
  202. package/src/data-structures/hash/hash-map.ts +270 -19
  203. package/src/data-structures/heap/heap.ts +326 -4
  204. package/src/data-structures/heap/max-heap.ts +2 -2
  205. package/src/data-structures/linked-list/doubly-linked-list.ts +394 -3
  206. package/src/data-structures/linked-list/singly-linked-list.ts +348 -3
  207. package/src/data-structures/linked-list/skip-linked-list.ts +421 -7
  208. package/src/data-structures/matrix/matrix.ts +194 -10
  209. package/src/data-structures/priority-queue/max-priority-queue.ts +2 -2
  210. package/src/data-structures/queue/deque.ts +350 -5
  211. package/src/data-structures/queue/queue.ts +276 -0
  212. package/src/data-structures/stack/stack.ts +230 -0
  213. package/src/data-structures/trie/trie.ts +283 -7
  214. package/src/interfaces/graph.ts +1 -1
  215. package/src/types/common.ts +2 -2
  216. package/src/types/data-structures/binary-tree/bst.ts +1 -0
  217. package/src/types/data-structures/binary-tree/tree-map.ts +6 -0
  218. package/src/types/data-structures/binary-tree/tree-multi-set.ts +5 -0
  219. package/src/types/data-structures/binary-tree/tree-set.ts +5 -0
  220. package/src/types/data-structures/heap/heap.ts +1 -0
  221. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  222. package/src/types/utils/validate-type.ts +4 -4
  223. package/vercel.json +6 -0
  224. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  225. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  226. package/dist/leetcode/avl-tree.mjs +0 -2720
  227. package/dist/leetcode/binary-tree.mjs +0 -1594
  228. package/dist/leetcode/bst.mjs +0 -2398
  229. package/dist/leetcode/deque.mjs +0 -683
  230. package/dist/leetcode/directed-graph.mjs +0 -1733
  231. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  232. package/dist/leetcode/hash-map.mjs +0 -493
  233. package/dist/leetcode/heap.mjs +0 -542
  234. package/dist/leetcode/max-heap.mjs +0 -375
  235. package/dist/leetcode/max-priority-queue.mjs +0 -383
  236. package/dist/leetcode/min-heap.mjs +0 -363
  237. package/dist/leetcode/min-priority-queue.mjs +0 -371
  238. package/dist/leetcode/priority-queue.mjs +0 -363
  239. package/dist/leetcode/queue.mjs +0 -943
  240. package/dist/leetcode/red-black-tree.mjs +0 -2765
  241. package/dist/leetcode/singly-linked-list.mjs +0 -754
  242. package/dist/leetcode/stack.mjs +0 -217
  243. package/dist/leetcode/tree-counter.mjs +0 -3039
  244. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  245. package/dist/leetcode/trie.mjs +0 -413
  246. 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/8292cb978daf85ebe846186c7c7572aece04fb7b/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:562](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L562)
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:344](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L344)
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:400](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L400)
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:491](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L491)
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:274](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L274)
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:209](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L209)
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:144](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L144)
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:129](https://github.com/zrwusa/data-structure-typed/blob/8292cb978daf85ebe846186c7c7572aece04fb7b/src/data-structures/binary-tree/segment-tree.ts#L129)
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/8292cb978daf85ebe846186c7c7572aece04fb7b/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
+ ```