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
@@ -23,105 +23,6 @@ import { IterableElementBase } from '../base';
23
23
  * 7. Efficient Sorting Algorithms: For example, heap sort. Heap sort uses the properties of a heap to sort elements.
24
24
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prime's minimum-spanning tree algorithm, which use heaps to improve performance.
25
25
  * @example
26
- * // basic Heap creation and add operation
27
- * // Create a min heap (default)
28
- * const minHeap = new Heap([5, 3, 7, 1, 9, 2]);
29
- *
30
- * // Verify size
31
- * console.log(minHeap.size); // 6;
32
- *
33
- * // Add new element
34
- * minHeap.add(4);
35
- * console.log(minHeap.size); // 7;
36
- *
37
- * // Min heap property: smallest element at root
38
- * const min = minHeap.peek();
39
- * console.log(min); // 1;
40
- * @example
41
- * // Heap with custom comparator (MaxHeap behavior)
42
- * interface Task {
43
- * id: number;
44
- * priority: number;
45
- * name: string;
46
- * }
47
- *
48
- * // Custom comparator for max heap behavior (higher priority first)
49
- * const tasks: Task[] = [
50
- * { id: 1, priority: 5, name: 'Email' },
51
- * { id: 2, priority: 3, name: 'Chat' },
52
- * { id: 3, priority: 8, name: 'Alert' }
53
- * ];
54
- *
55
- * const maxHeap = new Heap(tasks, {
56
- * comparator: (a: Task, b: Task) => b.priority - a.priority
57
- * });
58
- *
59
- * console.log(maxHeap.size); // 3;
60
- *
61
- * // Peek returns highest priority task
62
- * const topTask = maxHeap.peek();
63
- * console.log(topTask?.priority); // 8;
64
- * console.log(topTask?.name); // 'Alert';
65
- * @example
66
- * // Heap for event processing with priority
67
- * interface Event {
68
- * id: number;
69
- * type: 'critical' | 'warning' | 'info';
70
- * timestamp: number;
71
- * message: string;
72
- * }
73
- *
74
- * // Custom priority: critical > warning > info
75
- * const priorityMap = { critical: 3, warning: 2, info: 1 };
76
- *
77
- * const eventHeap = new Heap<Event>([], {
78
- * comparator: (a: Event, b: Event) => {
79
- * const priorityA = priorityMap[a.type];
80
- * const priorityB = priorityMap[b.type];
81
- * return priorityB - priorityA; // Higher priority first
82
- * }
83
- * });
84
- *
85
- * // Add events in random order
86
- * eventHeap.add({ id: 1, type: 'info', timestamp: 100, message: 'User logged in' });
87
- * eventHeap.add({ id: 2, type: 'critical', timestamp: 101, message: 'Server down' });
88
- * eventHeap.add({ id: 3, type: 'warning', timestamp: 102, message: 'High memory' });
89
- * eventHeap.add({ id: 4, type: 'info', timestamp: 103, message: 'Cache cleared' });
90
- * eventHeap.add({ id: 5, type: 'critical', timestamp: 104, message: 'Database error' });
91
- *
92
- * console.log(eventHeap.size); // 5;
93
- *
94
- * // Process events by priority (critical first)
95
- * const processedOrder: Event[] = [];
96
- * while (eventHeap.size > 0) {
97
- * const event = eventHeap.poll();
98
- * if (event) {
99
- * processedOrder.push(event);
100
- * }
101
- * }
102
- *
103
- * // Verify critical events came first
104
- * console.log(processedOrder[0].type); // 'critical';
105
- * console.log(processedOrder[1].type); // 'critical';
106
- * console.log(processedOrder[2].type); // 'warning';
107
- * console.log(processedOrder[3].type); // 'info';
108
- * console.log(processedOrder[4].type); // 'info';
109
- *
110
- * // Verify O(log n) operations
111
- * const newHeap = new Heap<number>([5, 3, 7, 1]);
112
- *
113
- * // Add - O(log n)
114
- * newHeap.add(2);
115
- * console.log(newHeap.size); // 5;
116
- *
117
- * // Poll - O(log n)
118
- * const removed = newHeap.poll();
119
- * console.log(removed); // 1;
120
- *
121
- * // Peek - O(1)
122
- * const top = newHeap.peek();
123
- * console.log(top); // 2;
124
- * @example
125
26
  * // Use Heap to solve top k problems
126
27
  * function topKElements(arr: number[], k: number): number[] {
127
28
  * const heap = new Heap<number>([], { comparator: (a, b) => b - a }); // Max heap
@@ -236,6 +137,12 @@ import { IterableElementBase } from '../base';
236
137
  * ['Task5', 4]
237
138
  * ]);
238
139
  * console.log(scheduleTasks(tasks, 2)); // expectedMap;
140
+ * @example
141
+ * // Get all elements as array
142
+ * const heap = new Heap<number>([5, 1, 3, 2, 4]);
143
+ * const arr = heap.toArray();
144
+ * console.log(arr.length); // 5;
145
+ * console.log(arr.sort()); // [1, 2, 3, 4, 5];
239
146
  */
240
147
  export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
241
148
  protected _equals: (a: E, b: E) => boolean;
@@ -258,6 +165,46 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
258
165
  * Get the number of elements.
259
166
  * @remarks Time O(1), Space O(1)
260
167
  * @returns Heap size.
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+ * @example
200
+ * // Track heap capacity
201
+ * const heap = new Heap<number>();
202
+ * console.log(heap.size); // 0;
203
+ * heap.add(10);
204
+ * heap.add(20);
205
+ * console.log(heap.size); // 2;
206
+ * heap.poll();
207
+ * console.log(heap.size); // 1;
261
208
  */
262
209
  get size(): number;
263
210
  /**
@@ -292,6 +239,52 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
292
239
  * @remarks Time O(1) amortized, Space O(1)
293
240
  * @param element - Element to insert.
294
241
  * @returns True.
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+ * @example
274
+ * // basic Heap creation and add operation
275
+ * // Create a min heap (default)
276
+ * const minHeap = new Heap([5, 3, 7, 1, 9, 2]);
277
+ *
278
+ * // Verify size
279
+ * console.log(minHeap.size); // 6;
280
+ *
281
+ * // Add new element
282
+ * minHeap.add(4);
283
+ * console.log(minHeap.size); // 7;
284
+ *
285
+ * // Min heap property: smallest element at root
286
+ * const min = minHeap.peek();
287
+ * console.log(min); // 1;
295
288
  */
296
289
  add(element: E): boolean;
297
290
  /**
@@ -299,30 +292,279 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
299
292
  * @remarks Time O(N log N), Space O(1)
300
293
  * @param elements - Iterable of elements or raw values.
301
294
  * @returns Array of per-element success flags.
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+ * @example
324
+ * // Add multiple elements
325
+ * const heap = new Heap<number>([], { comparator: (a, b) => a - b });
326
+ * heap.addMany([5, 3, 7, 1]);
327
+ * console.log(heap.peek()); // 1;
328
+ * console.log(heap.size); // 4;
302
329
  */
303
330
  addMany(elements: Iterable<E | R>): boolean[];
304
331
  /**
305
332
  * Remove and return the top element.
306
333
  * @remarks Time O(log N), Space O(1)
307
334
  * @returns Top element or undefined.
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+ * @example
367
+ * // Heap with custom comparator (MaxHeap behavior)
368
+ * interface Task {
369
+ * id: number;
370
+ * priority: number;
371
+ * name: string;
372
+ * }
373
+ *
374
+ * // Custom comparator for max heap behavior (higher priority first)
375
+ * const tasks: Task[] = [
376
+ * { id: 1, priority: 5, name: 'Email' },
377
+ * { id: 2, priority: 3, name: 'Chat' },
378
+ * { id: 3, priority: 8, name: 'Alert' }
379
+ * ];
380
+ *
381
+ * const maxHeap = new Heap(tasks, {
382
+ * comparator: (a: Task, b: Task) => b.priority - a.priority
383
+ * });
384
+ *
385
+ * console.log(maxHeap.size); // 3;
386
+ *
387
+ * // Peek returns highest priority task
388
+ * const topTask = maxHeap.peek();
389
+ * console.log(topTask?.priority); // 8;
390
+ * console.log(topTask?.name); // 'Alert';
308
391
  */
309
392
  poll(): E | undefined;
310
393
  /**
311
394
  * Get the current top element without removing it.
312
395
  * @remarks Time O(1), Space O(1)
313
396
  * @returns Top element or undefined.
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+
418
+
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+ * @example
429
+ * // Heap for event processing with priority
430
+ * interface Event {
431
+ * id: number;
432
+ * type: 'critical' | 'warning' | 'info';
433
+ * timestamp: number;
434
+ * message: string;
435
+ * }
436
+ *
437
+ * // Custom priority: critical > warning > info
438
+ * const priorityMap = { critical: 3, warning: 2, info: 1 };
439
+ *
440
+ * const eventHeap = new Heap<Event>([], {
441
+ * comparator: (a: Event, b: Event) => {
442
+ * const priorityA = priorityMap[a.type];
443
+ * const priorityB = priorityMap[b.type];
444
+ * return priorityB - priorityA; // Higher priority first
445
+ * }
446
+ * });
447
+ *
448
+ * // Add events in random order
449
+ * eventHeap.add({ id: 1, type: 'info', timestamp: 100, message: 'User logged in' });
450
+ * eventHeap.add({ id: 2, type: 'critical', timestamp: 101, message: 'Server down' });
451
+ * eventHeap.add({ id: 3, type: 'warning', timestamp: 102, message: 'High memory' });
452
+ * eventHeap.add({ id: 4, type: 'info', timestamp: 103, message: 'Cache cleared' });
453
+ * eventHeap.add({ id: 5, type: 'critical', timestamp: 104, message: 'Database error' });
454
+ *
455
+ * console.log(eventHeap.size); // 5;
456
+ *
457
+ * // Process events by priority (critical first)
458
+ * const processedOrder: Event[] = [];
459
+ * while (eventHeap.size > 0) {
460
+ * const event = eventHeap.poll();
461
+ * if (event) {
462
+ * processedOrder.push(event);
463
+ * }
464
+ * }
465
+ *
466
+ * // Verify critical events came first
467
+ * console.log(processedOrder[0].type); // 'critical';
468
+ * console.log(processedOrder[1].type); // 'critical';
469
+ * console.log(processedOrder[2].type); // 'warning';
470
+ * console.log(processedOrder[3].type); // 'info';
471
+ * console.log(processedOrder[4].type); // 'info';
472
+ *
473
+ * // Verify O(log n) operations
474
+ * const newHeap = new Heap<number>([5, 3, 7, 1]);
475
+ *
476
+ * // Add - O(log n)
477
+ * newHeap.add(2);
478
+ * console.log(newHeap.size); // 5;
479
+ *
480
+ * // Poll - O(log n)
481
+ * const removed = newHeap.poll();
482
+ * console.log(removed); // 1;
483
+ *
484
+ * // Peek - O(1)
485
+ * const top = newHeap.peek();
486
+ * console.log(top); // 2;
314
487
  */
315
488
  peek(): E | undefined;
316
489
  /**
317
490
  * Check whether the heap is empty.
318
491
  * @remarks Time O(1), Space O(1)
319
492
  * @returns True if size is 0.
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+
520
+
521
+
522
+ * @example
523
+ * // Check if heap is empty
524
+ * const heap = new Heap<number>([], { comparator: (a, b) => a - b });
525
+ * console.log(heap.isEmpty()); // true;
526
+ * heap.add(1);
527
+ * console.log(heap.isEmpty()); // false;
320
528
  */
321
529
  isEmpty(): boolean;
322
530
  /**
323
531
  * Remove all elements.
324
532
  * @remarks Time O(1), Space O(1)
325
533
  * @returns void
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+
561
+
562
+
563
+ * @example
564
+ * // Remove all elements
565
+ * const heap = new Heap<number>([1, 2, 3], { comparator: (a, b) => a - b });
566
+ * heap.clear();
567
+ * console.log(heap.isEmpty()); // true;
326
568
  */
327
569
  clear(): void;
328
570
  /**
@@ -337,6 +579,33 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
337
579
  * @remarks Time O(N), Space O(1)
338
580
  * @param element - Element to search for.
339
581
  * @returns True if found.
582
+
583
+
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+
592
+
593
+
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+ * @example
605
+ * // Check element existence
606
+ * const heap = new Heap<number>([3, 1, 2], { comparator: (a, b) => a - b });
607
+ * console.log(heap.has(1)); // true;
608
+ * console.log(heap.has(99)); // false;
340
609
  */
341
610
  has(element: E): boolean;
342
611
  /**
@@ -344,6 +613,39 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
344
613
  * @remarks Time O(N), Space O(1)
345
614
  * @param element - Element to delete.
346
615
  * @returns True if an element was removed.
616
+
617
+
618
+
619
+
620
+
621
+
622
+
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+ * @example
645
+ * // Remove specific element
646
+ * const heap = new Heap<number>([3, 1, 4, 1, 5], { comparator: (a, b) => a - b });
647
+ * heap.delete(4);
648
+ * console.log(heap.toArray().includes(4)); // false;
347
649
  */
348
650
  delete(element: E): boolean;
349
651
  /**
@@ -365,6 +667,33 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
365
667
  * @remarks Time O(N), Space O(H)
366
668
  * @param [order] - Traversal order: 'PRE' | 'IN' | 'POST'.
367
669
  * @returns Array of visited elements.
670
+
671
+
672
+
673
+
674
+
675
+
676
+
677
+
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+
687
+
688
+
689
+
690
+
691
+
692
+ * @example
693
+ * // Depth-first traversal
694
+ * const heap = new Heap<number>([3, 1, 2], { comparator: (a, b) => a - b });
695
+ * const result = heap.dfs('IN');
696
+ * console.log(result.length); // 3;
368
697
  */
369
698
  dfs(order?: DFSOrderPattern): E[];
370
699
  /**
@@ -377,12 +706,84 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
377
706
  * Return all elements in ascending order by repeatedly polling.
378
707
  * @remarks Time O(N log N), Space O(N)
379
708
  * @returns Sorted array of elements.
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+
717
+
718
+
719
+
720
+
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+
736
+
737
+
738
+
739
+
740
+ * @example
741
+ * // Sort elements using heap
742
+ * const heap = new Heap<number>([5, 1, 3, 2, 4]);
743
+ * const sorted = heap.sort();
744
+ * console.log(sorted); // [1, 2, 3, 4, 5];
380
745
  */
381
746
  sort(): E[];
382
747
  /**
383
748
  * Deep clone this heap.
384
749
  * @remarks Time O(N), Space O(N)
385
750
  * @returns A new heap with the same elements.
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+
773
+
774
+
775
+
776
+
777
+
778
+
779
+
780
+ * @example
781
+ * // Create independent copy
782
+ * const heap = new Heap<number>([3, 1, 4], { comparator: (a, b) => a - b });
783
+ * const copy = heap.clone();
784
+ * copy.poll();
785
+ * console.log(heap.size); // 3;
786
+ * console.log(copy.size); // 2;
386
787
  */
387
788
  clone(): this;
388
789
  /**
@@ -391,6 +792,40 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
391
792
  * @param callback - Predicate (element, index, heap) → boolean to keep element.
392
793
  * @param [thisArg] - Value for `this` inside the callback.
393
794
  * @returns A new heap with the kept elements.
795
+
796
+
797
+
798
+
799
+
800
+
801
+
802
+
803
+
804
+
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+
816
+
817
+
818
+
819
+
820
+
821
+
822
+
823
+
824
+ * @example
825
+ * // Filter elements
826
+ * const heap = new Heap<number>([1, 2, 3, 4, 5], { comparator: (a, b) => a - b });
827
+ * const evens = heap.filter(x => x % 2 === 0);
828
+ * console.log(evens.size); // 2;
394
829
  */
395
830
  filter(callback: ElementCallback<E, R, boolean>, thisArg?: unknown): this;
396
831
  /**
@@ -402,6 +837,39 @@ export declare class Heap<E = any, R = any> extends IterableElementBase<E, R> {
402
837
  * @param options - Options for the output heap, including comparator for EM.
403
838
  * @param [thisArg] - Value for `this` inside the callback.
404
839
  * @returns A new heap with mapped elements.
840
+
841
+
842
+
843
+
844
+
845
+
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+ * @example
869
+ * // Transform elements
870
+ * const heap = new Heap<number>([1, 2, 3], { comparator: (a, b) => a - b });
871
+ * const doubled = heap.map(x => x * 2, { comparator: (a, b) => a - b });
872
+ * console.log(doubled.peek()); // 2;
405
873
  */
406
874
  map<EM, RM>(callback: ElementCallback<E, R, EM>, options: HeapOptions<EM, RM> & {
407
875
  comparator: Comparator<EM>;