data-structure-typed 2.4.5 → 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 (240) 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 +78 -31
  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 +24509 -2899
  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 +32555 -10936
  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 +24507 -2898
  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 +32553 -10935
  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-element-base.d.ts +1 -1
  54. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  55. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  56. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +368 -51
  57. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +473 -147
  58. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +931 -80
  59. package/dist/types/data-structures/binary-tree/bst.d.ts +792 -29
  60. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +592 -32
  61. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +320 -135
  62. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3662 -6
  63. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3487 -201
  64. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2778 -65
  65. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3414 -6
  66. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  67. package/dist/types/data-structures/graph/directed-graph.d.ts +419 -47
  68. package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
  69. package/dist/types/data-structures/graph/undirected-graph.d.ts +384 -59
  70. package/dist/types/data-structures/hash/hash-map.d.ts +462 -89
  71. package/dist/types/data-structures/heap/heap.d.ts +567 -99
  72. package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
  73. package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
  74. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +631 -49
  75. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +581 -68
  76. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +775 -12
  77. package/dist/types/data-structures/matrix/matrix.d.ts +491 -0
  78. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
  79. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
  80. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
  81. package/dist/types/data-structures/queue/deque.d.ts +578 -71
  82. package/dist/types/data-structures/queue/queue.d.ts +451 -42
  83. package/dist/types/data-structures/stack/stack.d.ts +374 -32
  84. package/dist/types/data-structures/trie/trie.d.ts +458 -48
  85. package/dist/types/interfaces/graph.d.ts +1 -1
  86. package/dist/types/types/common.d.ts +2 -2
  87. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
  88. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  89. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
  90. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  91. package/dist/types/types/utils/validate-type.d.ts +4 -4
  92. package/dist/umd/data-structure-typed.js +32432 -10808
  93. package/dist/umd/data-structure-typed.min.js +10 -4
  94. package/docs-site-docusaurus/README.md +41 -0
  95. package/docs-site-docusaurus/docs/api/README.md +52 -0
  96. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +6130 -0
  97. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +282 -0
  98. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +2266 -0
  99. package/docs-site-docusaurus/docs/api/classes/BST.md +5831 -0
  100. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +333 -0
  101. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +455 -0
  102. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +4647 -0
  103. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +331 -0
  104. package/docs-site-docusaurus/docs/api/classes/Deque.md +2767 -0
  105. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +2999 -0
  106. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +2685 -0
  107. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +221 -0
  108. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +253 -0
  109. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +21 -0
  110. package/docs-site-docusaurus/docs/api/classes/HashMap.md +1333 -0
  111. package/docs-site-docusaurus/docs/api/classes/Heap.md +1881 -0
  112. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +800 -0
  113. package/docs-site-docusaurus/docs/api/classes/IterableEntryBase.md +644 -0
  114. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +1632 -0
  115. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +1853 -0
  116. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +1108 -0
  117. package/docs-site-docusaurus/docs/api/classes/LinkedListNode.md +156 -0
  118. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +2824 -0
  119. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +2929 -0
  120. package/docs-site-docusaurus/docs/api/classes/Matrix.md +1026 -0
  121. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +1866 -0
  122. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +1883 -0
  123. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +1879 -0
  124. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +1882 -0
  125. package/docs-site-docusaurus/docs/api/classes/Navigator.md +109 -0
  126. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +1839 -0
  127. package/docs-site-docusaurus/docs/api/classes/Queue.md +2244 -0
  128. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +6374 -0
  129. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +372 -0
  130. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +2897 -0
  131. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +169 -0
  132. package/docs-site-docusaurus/docs/api/classes/SkipList.md +1229 -0
  133. package/docs-site-docusaurus/docs/api/classes/Stack.md +1573 -0
  134. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +1257 -0
  135. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +1475 -0
  136. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +1117 -0
  137. package/docs-site-docusaurus/docs/api/classes/Trie.md +1708 -0
  138. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +199 -0
  139. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +2979 -0
  140. package/docs-site-docusaurus/docs/guide/_category_.json +6 -0
  141. package/docs-site-docusaurus/docs/guide/architecture.md +613 -0
  142. package/docs-site-docusaurus/docs/guide/concepts.md +420 -0
  143. package/docs-site-docusaurus/docs/guide/guides.md +611 -0
  144. package/docs-site-docusaurus/docs/guide/installation.md +60 -0
  145. package/docs-site-docusaurus/docs/guide/integrations.md +823 -0
  146. package/docs-site-docusaurus/docs/guide/overview.md +638 -0
  147. package/docs-site-docusaurus/docs/guide/performance.md +833 -0
  148. package/docs-site-docusaurus/docs/guide/quick-start.md +73 -0
  149. package/docs-site-docusaurus/docusaurus.config.ts +159 -0
  150. package/docs-site-docusaurus/fix-mdx-generics.mjs +75 -0
  151. package/docs-site-docusaurus/package-lock.json +18667 -0
  152. package/docs-site-docusaurus/package.json +50 -0
  153. package/docs-site-docusaurus/prefix-class-to-methods.mjs +48 -0
  154. package/docs-site-docusaurus/sidebars.ts +23 -0
  155. package/docs-site-docusaurus/sort-protected.mjs +87 -0
  156. package/docs-site-docusaurus/src/css/custom.css +96 -0
  157. package/docs-site-docusaurus/src/pages/index.module.css +13 -0
  158. package/docs-site-docusaurus/src/pages/index.tsx +71 -0
  159. package/docs-site-docusaurus/src/pages/markdown-page.md +7 -0
  160. package/docs-site-docusaurus/src/theme/TOCItems/index.tsx +34 -0
  161. package/docs-site-docusaurus/static/.nojekyll +0 -0
  162. package/docs-site-docusaurus/static/img/docusaurus-social-card.jpg +0 -0
  163. package/docs-site-docusaurus/static/img/docusaurus.png +0 -0
  164. package/docs-site-docusaurus/static/img/favicon.ico +0 -0
  165. package/docs-site-docusaurus/static/img/favicon.png +0 -0
  166. package/docs-site-docusaurus/static/img/logo-180.png +0 -0
  167. package/docs-site-docusaurus/static/img/logo.jpg +0 -0
  168. package/docs-site-docusaurus/static/img/logo.png +0 -0
  169. package/docs-site-docusaurus/static/img/logo.svg +1 -0
  170. package/docs-site-docusaurus/static/img/og-image.png +0 -0
  171. package/docs-site-docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
  172. package/docs-site-docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
  173. package/docs-site-docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
  174. package/docs-site-docusaurus/static/robots.txt +4 -0
  175. package/docs-site-docusaurus/typedoc.json +23 -0
  176. package/package.json +109 -12
  177. package/src/data-structures/base/index.ts +1 -0
  178. package/src/data-structures/base/iterable-element-base.ts +4 -5
  179. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  180. package/src/data-structures/base/linear-base.ts +3 -3
  181. package/src/data-structures/binary-tree/avl-tree.ts +386 -51
  182. package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
  183. package/src/data-structures/binary-tree/binary-tree.ts +956 -81
  184. package/src/data-structures/binary-tree/bst.ts +840 -35
  185. package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
  186. package/src/data-structures/binary-tree/segment-tree.ts +498 -249
  187. package/src/data-structures/binary-tree/tree-map.ts +3784 -7
  188. package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
  189. package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
  190. package/src/data-structures/binary-tree/tree-set.ts +3531 -10
  191. package/src/data-structures/graph/abstract-graph.ts +4 -4
  192. package/src/data-structures/graph/directed-graph.ts +429 -47
  193. package/src/data-structures/graph/map-graph.ts +59 -1
  194. package/src/data-structures/graph/undirected-graph.ts +393 -59
  195. package/src/data-structures/hash/hash-map.ts +476 -92
  196. package/src/data-structures/heap/heap.ts +581 -99
  197. package/src/data-structures/heap/max-heap.ts +46 -0
  198. package/src/data-structures/heap/min-heap.ts +59 -0
  199. package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
  200. package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
  201. package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
  202. package/src/data-structures/matrix/matrix.ts +584 -12
  203. package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
  204. package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
  205. package/src/data-structures/priority-queue/priority-queue.ts +60 -0
  206. package/src/data-structures/queue/deque.ts +592 -70
  207. package/src/data-structures/queue/queue.ts +463 -42
  208. package/src/data-structures/stack/stack.ts +384 -32
  209. package/src/data-structures/trie/trie.ts +470 -48
  210. package/src/interfaces/graph.ts +1 -1
  211. package/src/types/common.ts +2 -2
  212. package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
  213. package/src/types/data-structures/heap/heap.ts +1 -0
  214. package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
  215. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  216. package/src/types/utils/validate-type.ts +4 -4
  217. package/vercel.json +6 -0
  218. package/dist/leetcode/avl-tree-counter.mjs +0 -2957
  219. package/dist/leetcode/avl-tree-multi-map.mjs +0 -2889
  220. package/dist/leetcode/avl-tree.mjs +0 -2720
  221. package/dist/leetcode/binary-tree.mjs +0 -1594
  222. package/dist/leetcode/bst.mjs +0 -2398
  223. package/dist/leetcode/deque.mjs +0 -683
  224. package/dist/leetcode/directed-graph.mjs +0 -1733
  225. package/dist/leetcode/doubly-linked-list.mjs +0 -709
  226. package/dist/leetcode/hash-map.mjs +0 -493
  227. package/dist/leetcode/heap.mjs +0 -542
  228. package/dist/leetcode/max-heap.mjs +0 -375
  229. package/dist/leetcode/max-priority-queue.mjs +0 -383
  230. package/dist/leetcode/min-heap.mjs +0 -363
  231. package/dist/leetcode/min-priority-queue.mjs +0 -371
  232. package/dist/leetcode/priority-queue.mjs +0 -363
  233. package/dist/leetcode/queue.mjs +0 -943
  234. package/dist/leetcode/red-black-tree.mjs +0 -2765
  235. package/dist/leetcode/singly-linked-list.mjs +0 -754
  236. package/dist/leetcode/stack.mjs +0 -217
  237. package/dist/leetcode/tree-counter.mjs +0 -3039
  238. package/dist/leetcode/tree-multi-map.mjs +0 -2913
  239. package/dist/leetcode/trie.mjs +0 -413
  240. package/dist/leetcode/undirected-graph.mjs +0 -1650
@@ -0,0 +1,638 @@
1
+ ---
2
+ sidebar_label: "OVERVIEW"
3
+ description: "Complete overview of all 20+ data structures: trees, heaps, graphs, queues, linked lists, hash maps, and more."
4
+ ---
5
+
6
+ # OVERVIEW
7
+
8
+ A quick-reference guide to all structures, common operations, and usage patterns. For complete API details with method signatures and examples, see the **[Full API Docs](https://data-structure-typed-docs.vercel.app/)**.
9
+
10
+ **[Back to README](/.md) • [API Docs](https://data-structure-typed-docs.vercel.app/) • [Real-World Examples](/guide/guides.md) • [Performance](/guide/performance.md)**
11
+
12
+ ---
13
+
14
+ ## Table of Contents
15
+
16
+ 1. [Quick Reference Table](#quick-reference-table)
17
+ 2. [All Data Structures](#all-data-structures)
18
+ 3. [CRUD Operations](#crud-operations)
19
+ 4. [Common Methods](#common-methods)
20
+ 5. [TypeScript Support](#typescript-support)
21
+
22
+ ---
23
+
24
+ ## Quick Reference Table
25
+
26
+ | Data Structure | Best Use Case | Time Complexity | Space |
27
+ |-------------------|---------------------------|--------------------------|--------|
28
+ | **Array** | Direct indexed access | O(n) insert/delete | O(n) |
29
+ | **Linked List** | Dynamic size, fast insert | O(n) search, O(1) insert | O(n) |
30
+ | **Stack** | Undo/redo, DFS | O(1) all | O(n) |
31
+ | **Queue** | FIFO processing | O(1) all | O(n) |
32
+ | **Deque** | Head/tail operations | O(1) all | O(n) |
33
+ | **Binary Tree** | Hierarchical data | O(n) avg | O(n) |
34
+ | **BST** | Sorted search | O(log n) avg | O(n) |
35
+ | **RedBlackTree** | Guaranteed sorted | O(log n) guaranteed | O(n) |
36
+ | **AVL Tree** | Balanced sorted | O(log n) guaranteed | O(n) |
37
+ | **Heap** | Priority queue | O(log n) add/remove | O(n) |
38
+ | **PriorityQueue** | Task scheduling | O(log n) add/poll | O(n) |
39
+ | **Trie** | Prefix search | O(m+k) search | O(26n) |
40
+ | **Graph** | Networks, paths | Varies | O(V+E) |
41
+ | **SkipList** | Sorted KV (probabilistic) | O(log n) avg all ops | O(n log n) |
42
+ | **SegmentTree** | Range queries (sum/min/max/custom) | O(log n) query/update | O(n) |
43
+ | **BinaryIndexedTree** | Prefix sums, frequency counting | O(log n) query/update | O(n) |
44
+ | **Matrix** | 2D grid arithmetic | O(n²) add, O(n³) multiply | O(n²) |
45
+
46
+ ---
47
+
48
+ ## All Data Structures
49
+
50
+ ### Stack Structure
51
+
52
+ #### Stack
53
+
54
+ ```typescript
55
+ import { Stack } from 'data-structure-typed';
56
+
57
+ const stack = new Stack<number>([1, 2]);
58
+ stack.push(3); // add to bottom
59
+ const top = stack.pop(); // Remove from top - O(1)
60
+ const peek = stack.peek(); // View top
61
+ stack.print(); // [1, 2]
62
+ ```
63
+
64
+
65
+
66
+ ### Linear Structures
67
+
68
+ #### Queue
69
+
70
+ ```typescript
71
+ import { Queue } from 'data-structure-typed';
72
+
73
+ const queue = new Queue<number>([1, 2]);
74
+ queue.push(3); // add to back
75
+ const first = queue.shift(); // Remove from front - O(1)
76
+ const length = queue.length; // Current length
77
+ queue.print(); // [2, 3]
78
+ ```
79
+
80
+ #### Deque
81
+
82
+ ```typescript
83
+ import { Deque } from 'data-structure-typed';
84
+
85
+ const deque = new Deque<number>([1, 2]);
86
+ deque.push(3); // Add to back
87
+ deque.unshift(0); // Add to front
88
+ deque.pop(); // Remove from back - O(1)
89
+ deque.shift(); // Remove from front - O(1)
90
+ deque.print(); // [1, 2]
91
+ ```
92
+
93
+ #### Linked Lists
94
+
95
+ ```typescript
96
+ import { SinglyLinkedList, DoublyLinkedList } from 'data-structure-typed';
97
+
98
+ const singly = new SinglyLinkedList<number>([1, 2]);
99
+ const doubly = new DoublyLinkedList<number>([1, 2]);
100
+
101
+ singly.push(3); // Add to end
102
+ singly.addAt(1, 99); // Insert at index - O(n)
103
+ singly.deleteAt(2); // Delete at index - O(n)
104
+ singly.print(); // [1, 99, 3]
105
+
106
+ doubly.push(3); // Add to end
107
+ doubly.addAt(1, 99); // Insert at index - O(n)
108
+ doubly.deleteAt(2); // Delete at index - O(n)
109
+ doubly.print(); // [1, 99, 3]
110
+ ```
111
+
112
+ ### Tree Structures
113
+
114
+ #### Binary Search Tree (BST)
115
+
116
+ ```typescript
117
+ import { BST } from 'data-structure-typed';
118
+
119
+ const bst = new BST<number>([1, 3, 5, 8, 6, 2, 4, 7]);
120
+ bst.add(9); // Add elements
121
+ bst.has(5); // Check existence - O(log n) avg
122
+ bst.delete(1); // Remove - O(log n) avg
123
+ bst.print(); // Visual representation
124
+ // ___4___
125
+ // / \
126
+ // 2_ _6_
127
+ // \ / \
128
+ // 3 5 7_
129
+ // \
130
+ // 8_
131
+ // \
132
+ // 9
133
+ ```
134
+
135
+ #### Red-Black Tree
136
+
137
+ ```typescript
138
+ import { RedBlackTree } from 'data-structure-typed';
139
+
140
+ const rbTree = new RedBlackTree<number, string>([[1, 'Alice'], [2, 'Bob'], [3, 'Chris']]);
141
+ rbTree.set(4, 'Dan'); // Add key-value
142
+ rbTree.get(1); // 'Alice'
143
+ rbTree.delete(2); // Remove - O(log n) guaranteed
144
+ console.log([...rbTree.values()]); // ['Alice', 'Chris', 'Dan'] Automatically sorted
145
+ rbTree.print()
146
+ // _3_
147
+ // / \
148
+ // 1 4
149
+
150
+ ```
151
+
152
+ #### AVL Tree
153
+
154
+ ```typescript
155
+ import {AVLTree} from 'data-structure-typed';
156
+
157
+ const avl = new AVLTree<number>([5, 4, 3, 8, 1]);
158
+ avl.add(9);
159
+ avl.isAVLBalanced(); // Check balance
160
+ avl.delete(3); // Auto-rebalances
161
+ avl.print()
162
+ // ___5_
163
+ // / \
164
+ // 1_ 8_
165
+ // \ \
166
+ // 4 9
167
+ ```
168
+
169
+ ### Heap & Priority Queue
170
+
171
+ #### Heap
172
+
173
+ ```typescript
174
+ import { MinHeap, MaxHeap } from 'data-structure-typed';
175
+
176
+ const minHeap = new MinHeap<number>([5, 3, 8]);
177
+ minHeap.add(1); // Add element - O(log n)
178
+ const min = minHeap.poll(); // Get minimum - O(log n)
179
+ const peek = minHeap.peek(); // View minimum - O(1)
180
+ ```
181
+
182
+ #### Priority Queue
183
+
184
+ ```typescript
185
+ import { MaxPriorityQueue } from 'data-structure-typed';
186
+
187
+ const pq = new MaxPriorityQueue<Task>();
188
+ pq.add({ id: 1, priority: 5 }); // Add - O(log n)
189
+ const task = pq.poll(); // Remove highest - O(log n)
190
+ const size = pq.size; // Current size
191
+ ```
192
+
193
+ ### Special Structures
194
+
195
+ #### Trie (Prefix Tree)
196
+
197
+ ```typescript
198
+ import { Trie } from 'data-structure-typed';
199
+
200
+ const trie = new Trie(['apple', 'app', 'banana']);
201
+ trie.add('apply');
202
+ trie.getWords('app'); // ['apple', 'apply', 'app'] - O(m+k)
203
+ trie.has('apple'); // true
204
+ trie.hasPrefix('ap'); // true
205
+ ```
206
+
207
+ #### Graph
208
+
209
+ ```typescript
210
+ import { DirectedGraph, UndirectedGraph } from 'data-structure-typed';
211
+
212
+ const graph = new DirectedGraph<string>();
213
+ graph.addVertex('A');
214
+ graph.addVertex('B');
215
+ graph.addEdge('A', 'B', 1); // Add edge with weight
216
+ graph.hasEdge('A', 'B'); // true
217
+ const {
218
+ distMap, distPaths, preMap, seen, paths, minDist, minPath
219
+ } = graph.dijkstra('A', 'B', true, true)!;
220
+ const order = graph.topologicalSort();
221
+ console.log(distMap)
222
+ console.log(distPaths)
223
+ console.log(preMap)
224
+ console.log(seen)
225
+ console.log(paths)
226
+ console.log(minDist)
227
+ console.log(minPath) // Shortest path
228
+ console.log(order) // DAG order
229
+ ```
230
+
231
+ ---
232
+
233
+ ## CRUD Operations
234
+
235
+ ### Create (Add)
236
+
237
+ ```typescript
238
+ const tree = new RedBlackTree<number, string>();
239
+ tree.set(1, 'Alice');
240
+ tree.setMany([[2, 'Bob'], [3, 'Charlie']]);
241
+
242
+ // Heap
243
+ const heap = new MaxHeap<number>([10, 20]);
244
+ heap.add(15);
245
+
246
+ // Trie
247
+ const trie = new Trie(['hello']);
248
+ trie.add('world');
249
+
250
+ // Graph
251
+ const graph = new DirectedGraph<string>();
252
+ graph.addVertex('A');
253
+ graph.addEdge('A', 'B', 1);
254
+ ```
255
+
256
+ ### Read (Query)
257
+
258
+ ```typescript
259
+ // Tree
260
+ tree.get(1); // 'Alice'
261
+ tree.has(1); // true
262
+ tree.size; // Number of elements
263
+
264
+ // Heap
265
+ heap.peek(); // Highest priority element
266
+ heap.size; // Current size
267
+
268
+ // Trie
269
+ trie.getWords('hello'); // true
270
+ trie.hasPrefix('hel'); // true
271
+
272
+ // Graph
273
+ graph.hasVertex('A'); // true
274
+ graph.hasEdge('A', 'B'); // true
275
+ graph.getNeighbors('A'); // Connected vertices
276
+ ```
277
+
278
+ ### Update (Modify)
279
+
280
+ ```typescript
281
+ // Tree
282
+ tree.set(1, 'Alice Updated'); // Update value
283
+ tree.delete(1); // Remove
284
+
285
+ // Heap
286
+ heap.pop(); // Remove highest
287
+
288
+ // Graph
289
+ graph.deleteEdge('A', 'B'); // Remove edge
290
+ graph.deleteVertex('A'); // Remove vertex
291
+ ```
292
+
293
+ ### Delete
294
+
295
+ ```typescript
296
+ // All structures support:
297
+ structure.clear(); // Remove all elements
298
+ structure.delete(key); // Remove specific
299
+ ```
300
+
301
+ ---
302
+
303
+ ## Common Methods
304
+
305
+ ### Available on All Structures
306
+
307
+ ```typescript
308
+ // Iteration
309
+ structure.forEach((value, key) => {
310
+ });
311
+ for (const item of structure) {
312
+ }
313
+
314
+ // Conversion
315
+ [...structure]; // Spread
316
+ Array.from(structure); // Array conversion
317
+
318
+ // Array methods
319
+ structure.map((v, k) => v * 2);
320
+ structure.filter((v, k) => v > 5);
321
+ structure.reduce((acc, v) => acc + v, 0);
322
+ structure.find((v, k) => v === 5);
323
+ structure.some((v, k) => v > 10);
324
+ structure.every((v, k) => v > 0);
325
+
326
+ // Properties
327
+ structure.size; // Element count
328
+ structure.isEmpty(); // Check empty
329
+ ```
330
+
331
+ ### Structure-Specific Methods
332
+
333
+ #### Trees
334
+
335
+ ```typescript
336
+ tree.height; // Tree height
337
+ tree.isAVLBalanced(); // Balance check
338
+ tree.getNode(key); // Get node object
339
+ tree.getHeight(key); // Node height
340
+ tree.getLeftMost(); // Leftmost node
341
+ tree.getRightMost(); // Rightmost node
342
+ ```
343
+
344
+ #### Deque
345
+
346
+ ```typescript
347
+ deque.peekFirst(); // View front
348
+ deque.peekLast(); // View back
349
+ deque.pollFirst(); // Remove front - O(1)
350
+ deque.pollLast(); // Remove back - O(1)
351
+ ```
352
+
353
+ #### Graph
354
+
355
+ ```typescript
356
+ graph.topologicalSort(); // DAG order
357
+ graph.dijkstra(start, end); // Shortest path
358
+ graph.dfs(vertex); // Depth-first traversal
359
+ graph.bfs(vertex); // Breadth-first traversal
360
+ ```
361
+
362
+ ---
363
+
364
+ ## TypeScript Support
365
+
366
+ ### Full Generic Support
367
+
368
+ ```typescript
369
+ // Custom type safety
370
+ const tree = new RedBlackTree<number, User>();
371
+ tree.set(1, { name: 'Alice', age: 30 });
372
+
373
+ const value = tree.get(1); // Type: User | undefined
374
+
375
+ // Automatic inference
376
+ const numbers = new Deque<number>([1, 2]);
377
+ numbers.push(3);
378
+
379
+ // Custom comparators
380
+ const descending = new RedBlackTree<number, string>([], {
381
+ comparator: (a, b) => b - a // Sort descending
382
+ });
383
+ ```
384
+
385
+ ### Type Safety Examples
386
+
387
+ ```typescript
388
+ interface Task {
389
+ id: string;
390
+ priority: number;
391
+ action: Promise<void>;
392
+ }
393
+
394
+ const pq = new MaxPriorityQueue<Task>(
395
+ {
396
+ comparator: (a, b) => a.priority - b.priority
397
+ }
398
+ );
399
+
400
+ pq.add({
401
+ id: '1', priority: 5, action: async () => {
402
+ }
403
+ });
404
+
405
+ // Type checking catches errors
406
+ const task = pq.poll();
407
+ if (task) {
408
+ // task is guaranteed to be Task
409
+ await task.action;
410
+ }
411
+ ```
412
+
413
+ ---
414
+
415
+ ## Complexity Chart
416
+
417
+ | Operation | Array | LinkedList | BST | RBTree | Heap | Trie |
418
+ |-----------|-------|------------|----------|----------|----------|------|
419
+ | Access | O(1) | O(n) | O(log n) | O(log n) | O(n) | N/A |
420
+ | Search | O(n) | O(n) | O(log n) | O(log n) | O(n) | O(m) |
421
+ | Insert | O(n) | O(1) | O(log n) | O(log n) | O(log n) | O(m) |
422
+ | Delete | O(n) | O(1) | O(log n) | O(log n) | O(log n) | O(m) |
423
+
424
+ ---
425
+
426
+ ## Common Patterns
427
+
428
+ ### Iterator Pattern
429
+
430
+ ```typescript
431
+ const tree = new RedBlackTree([5, 2, 8]);
432
+
433
+ // Works everywhere
434
+ const arr = [...tree.keys()]; // Spread
435
+ const set = new Set(tree.keys()); // Set constructor
436
+ for (const val of tree.values()) {
437
+ } // for...of
438
+ const [first, ...rest] = tree.keys(); // Destructuring
439
+ ```
440
+
441
+ ### Filtering Pattern
442
+
443
+ ```typescript
444
+ const tree = new RedBlackTree([
445
+ [1, { active: true }],
446
+ [2, { active: false }],
447
+ [3, { active: true }]
448
+ ]);
449
+
450
+ const inactive = tree
451
+ .filter((val) => val?.active ?? false)
452
+ .map((val, key) => [key, !val]);
453
+
454
+ console.log(...inactive);
455
+ ```
456
+
457
+ ### Sorting Pattern
458
+
459
+ ```typescript
460
+ const data = [64, 34, 25, 12, 22, 11, 90];
461
+ const sorted = [...new RedBlackTree(data).keys()]; // Instant sort!
462
+ ```
463
+
464
+ ---
465
+
466
+ ## SkipList & SkipListSet
467
+
468
+ Probabilistic sorted containers. Interchangeable with `TreeMap`/`TreeSet`.
469
+
470
+ ```typescript
471
+ import { SkipList } from 'data-structure-typed';
472
+
473
+ // Same API as TreeMap — drop-in replacement
474
+ const sl = new SkipList<number, string>([[3, 'c'], [1, 'a'], [2, 'b']]);
475
+ sl.set(4, 'd'); // upsert — returns this (chainable)
476
+ sl.get(2); // 'b'
477
+ sl.has(5); // false
478
+ sl.delete(1); // true
479
+
480
+ // Navigation
481
+ sl.first(); // [2, 'b']
482
+ sl.last(); // [4, 'd']
483
+ sl.ceiling(2); // [2, 'b'] — smallest >= 2
484
+ sl.floor(3); // [3, 'c'] — largest <= 3
485
+ sl.higher(2); // [3, 'c'] — strictly > 2
486
+ sl.lower(3); // [2, 'b'] — strictly < 3
487
+ sl.rangeSearch([2, 4]); // [[2,'b'],[3,'c'],[4,'d']]
488
+ sl.pollFirst(); // [2, 'b'] — remove+return first
489
+
490
+ // Iteration (sorted order)
491
+ for (const [k, v] of sl) console.log(k, v);
492
+ [...sl.keys()]; // [3, 4]
493
+ [...sl.values()]; // ['c', 'd']
494
+
495
+ // Functional
496
+ sl.filter((v, k) => k > 2).toArray(); // [[3,'c'],[4,'d']]
497
+ sl.map((v, k) => [k * 10, v]); // new SkipList
498
+ sl.reduce((acc, v) => acc + v!, ''); // 'cd'
499
+
500
+ // Custom comparator
501
+ const reversed = new SkipList<number, string>([], {
502
+ comparator: (a, b) => b - a
503
+ });
504
+
505
+ // From objects via toEntryFn
506
+ type User = { id: number; name: string };
507
+ const users = new SkipList<number, User, User>(data, {
508
+ toEntryFn: u => [u.id, u]
509
+ });
510
+ ```
511
+
512
+ ---
513
+
514
+ ## SegmentTree
515
+
516
+ Range queries with any associative merge operation.
517
+
518
+ ```typescript
519
+ import { SegmentTree } from 'data-structure-typed';
520
+
521
+ // Convenience factories (covers 90% of use cases)
522
+ const sumTree = SegmentTree.sum([1, 3, 5, 7, 9]);
523
+ const minTree = SegmentTree.min([5, 2, 8, 1, 9]);
524
+ const maxTree = SegmentTree.max([5, 2, 8, 1, 9]);
525
+
526
+ // Range query O(log n)
527
+ sumTree.query(1, 3); // 15 (3+5+7)
528
+ minTree.query(0, 4); // 1
529
+ maxTree.query(0, 2); // 8
530
+
531
+ // Point update O(log n)
532
+ sumTree.update(2, 10); // replaces 5 with 10
533
+ sumTree.query(1, 3); // 20 (3+10+7)
534
+
535
+ // Single element access O(1)
536
+ sumTree.get(2); // 10
537
+
538
+ // Custom merge (gcd, product, etc.)
539
+ const gcd = (a: number, b: number): number => b === 0 ? a : gcd(b, a % b);
540
+ const gcdTree = new SegmentTree([12, 8, 6, 18], { merger: gcd, identity: 0 });
541
+ gcdTree.query(0, 3); // 2
542
+
543
+ // Binary search on tree (ACL-style)
544
+ // maxRight(l, pred): find max r where pred(query(l, r)) is true
545
+ sumTree.maxRight(0, s => s <= 10); // rightmost index where prefix ≤ 10
546
+
547
+ // Standard interface
548
+ [...sumTree]; // leaf values as array
549
+ sumTree.toArray(); // same
550
+ sumTree.size; // 5
551
+ sumTree.clone(); // independent copy
552
+ ```
553
+
554
+ ---
555
+
556
+ ## BinaryIndexedTree (Fenwick Tree)
557
+
558
+ Prefix sums and point updates in O(log n). Lighter than SegmentTree; use when you only need sums.
559
+
560
+ ```typescript
561
+ import { BinaryIndexedTree } from 'data-structure-typed';
562
+
563
+ // Construct from size or array
564
+ const bit = new BinaryIndexedTree(6);
565
+ const bit2 = new BinaryIndexedTree([1, 3, 5, 7, 9, 11]);
566
+
567
+ // Point update: add delta
568
+ bit2.update(2, 4); // index 2 += 4 → value becomes 9
569
+
570
+ // Point set: absolute value
571
+ bit2.set(0, 100); // index 0 = 100
572
+
573
+ // Point query
574
+ bit2.get(2); // 9
575
+
576
+ // Prefix sum [0..i]
577
+ bit2.query(3); // sum of [0..3]
578
+
579
+ // Range sum [start..end]
580
+ bit2.queryRange(1, 3); // sum of [1..3]
581
+
582
+ // Binary search — requires non-negative values
583
+ bit2.lowerBound(10); // smallest i where prefix sum [0..i] >= 10
584
+ bit2.upperBound(10); // smallest i where prefix sum [0..i] > 10
585
+
586
+ // Standard interface
587
+ [...bit2]; // point values as array
588
+ bit2.toArray(); // same
589
+ bit2.size; // 6
590
+ bit2.clone();
591
+ bit2.clear();
592
+ ```
593
+
594
+ ---
595
+
596
+ ## Matrix
597
+
598
+ 2D grid arithmetic. Correct, minimal — not competing with NumPy.
599
+
600
+ ```typescript
601
+ import { Matrix } from 'data-structure-typed';
602
+
603
+ // Construction
604
+ const m = new Matrix([[1, 2, 3], [4, 5, 6]]);
605
+ Matrix.zeros(3, 4); // 3×4 zero matrix
606
+ Matrix.identity(3); // 3×3 identity matrix
607
+ Matrix.from([[1, 2], [3, 4]]); // from plain array
608
+
609
+ // Element access
610
+ m.get(0, 1); // 2
611
+ m.set(0, 1, 99); // returns boolean
612
+ m.size; // [2, 3]
613
+ m.rows; // 2
614
+ m.cols; // 3
615
+
616
+ // Arithmetic (returns new Matrix)
617
+ a.add(b);
618
+ a.subtract(b);
619
+ a.multiply(b); // matrix multiplication
620
+ a.dot(b); // dot product
621
+ a.transpose(); // supports rectangular matrices
622
+ a.inverse(); // square matrices only
623
+
624
+ // Standard interface
625
+ [...m]; // array of rows (copies)
626
+ m.toArray(); // deep copy as number[][]
627
+ m.flatten(); // [1,2,3,4,5,6] row-major
628
+ m.forEach((v, r, c) => ...);
629
+ m.map(v => v * 2); // new Matrix
630
+ m.clone(); // independent copy
631
+ m.isEmpty(); // true if 0 rows or 0 cols
632
+ ```
633
+
634
+ ---
635
+
636
+ **Need details?** Check [GUIDES.md](/guide/guides.md) for real-world examples.
637
+
638
+ **Performance curious?** See [PERFORMANCE.md](/guide/performance.md) for benchmarks.