binary-tree-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 (94) hide show
  1. package/README.md +0 -84
  2. package/dist/cjs/index.cjs +1476 -404
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs-legacy/index.cjs +1473 -401
  5. package/dist/cjs-legacy/index.cjs.map +1 -1
  6. package/dist/esm/index.mjs +1476 -404
  7. package/dist/esm/index.mjs.map +1 -1
  8. package/dist/esm-legacy/index.mjs +1473 -401
  9. package/dist/esm-legacy/index.mjs.map +1 -1
  10. package/dist/types/data-structures/base/index.d.ts +1 -0
  11. package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
  12. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  13. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  14. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +380 -51
  15. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +487 -147
  16. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +956 -80
  17. package/dist/types/data-structures/binary-tree/bst.d.ts +816 -29
  18. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +610 -31
  19. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +326 -135
  20. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3781 -6
  21. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3607 -201
  22. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2874 -65
  23. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3528 -6
  24. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  25. package/dist/types/data-structures/graph/directed-graph.d.ts +429 -47
  26. package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
  27. package/dist/types/data-structures/graph/undirected-graph.d.ts +393 -59
  28. package/dist/types/data-structures/hash/hash-map.d.ts +473 -89
  29. package/dist/types/data-structures/heap/heap.d.ts +581 -99
  30. package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
  31. package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
  32. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +646 -47
  33. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +596 -68
  34. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +793 -12
  35. package/dist/types/data-structures/matrix/matrix.d.ts +499 -0
  36. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
  37. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
  38. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
  39. package/dist/types/data-structures/queue/deque.d.ts +593 -71
  40. package/dist/types/data-structures/queue/queue.d.ts +463 -42
  41. package/dist/types/data-structures/stack/stack.d.ts +384 -32
  42. package/dist/types/data-structures/trie/trie.d.ts +470 -48
  43. package/dist/types/interfaces/graph.d.ts +1 -1
  44. package/dist/types/types/common.d.ts +2 -2
  45. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
  46. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  47. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
  48. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  49. package/dist/types/types/utils/validate-type.d.ts +4 -4
  50. package/dist/umd/binary-tree-typed.js +1469 -397
  51. package/dist/umd/binary-tree-typed.js.map +1 -1
  52. package/dist/umd/binary-tree-typed.min.js +5 -5
  53. package/dist/umd/binary-tree-typed.min.js.map +1 -1
  54. package/package.json +2 -2
  55. package/src/data-structures/base/index.ts +1 -0
  56. package/src/data-structures/base/iterable-element-base.ts +4 -5
  57. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  58. package/src/data-structures/base/linear-base.ts +3 -3
  59. package/src/data-structures/binary-tree/avl-tree.ts +386 -51
  60. package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
  61. package/src/data-structures/binary-tree/binary-tree.ts +956 -81
  62. package/src/data-structures/binary-tree/bst.ts +840 -35
  63. package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
  64. package/src/data-structures/binary-tree/segment-tree.ts +498 -249
  65. package/src/data-structures/binary-tree/tree-map.ts +3784 -7
  66. package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
  67. package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
  68. package/src/data-structures/binary-tree/tree-set.ts +3531 -10
  69. package/src/data-structures/graph/abstract-graph.ts +4 -4
  70. package/src/data-structures/graph/directed-graph.ts +429 -47
  71. package/src/data-structures/graph/map-graph.ts +59 -1
  72. package/src/data-structures/graph/undirected-graph.ts +393 -59
  73. package/src/data-structures/hash/hash-map.ts +476 -92
  74. package/src/data-structures/heap/heap.ts +581 -99
  75. package/src/data-structures/heap/max-heap.ts +46 -0
  76. package/src/data-structures/heap/min-heap.ts +59 -0
  77. package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
  78. package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
  79. package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
  80. package/src/data-structures/matrix/matrix.ts +584 -12
  81. package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
  82. package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
  83. package/src/data-structures/priority-queue/priority-queue.ts +60 -0
  84. package/src/data-structures/queue/deque.ts +592 -70
  85. package/src/data-structures/queue/queue.ts +463 -42
  86. package/src/data-structures/stack/stack.ts +384 -32
  87. package/src/data-structures/trie/trie.ts +470 -48
  88. package/src/interfaces/graph.ts +1 -1
  89. package/src/types/common.ts +2 -2
  90. package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
  91. package/src/types/data-structures/heap/heap.ts +1 -0
  92. package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
  93. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  94. package/src/types/utils/validate-type.ts +4 -4
@@ -21,6 +21,52 @@ import { Heap } from './heap';
21
21
  * 7. Efficient Sorting Algorithms: For example, heap sort. Heap sort uses the properties of a heap to sort elements.
22
22
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prim's minimum-spanning tree algorithm, which use heaps to improve performance.
23
23
  * @example
24
+ * // Find the K largest elements
25
+ * const data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
26
+ * const heap = new MaxHeap(data);
27
+ *
28
+ * // Extract top 3 elements
29
+ * const top3 = [];
30
+ * for (let i = 0; i < 3; i++) {
31
+ * top3.push(heap.poll());
32
+ * }
33
+ * console.log(top3); // [9, 6, 5];
34
+ * @example
35
+ * // Priority-based task processing
36
+ * interface Task {
37
+ * name: string;
38
+ * priority: number;
39
+ * }
40
+ *
41
+ * const heap = new MaxHeap<Task>([], {
42
+ * comparator: (a, b) => b.priority - a.priority
43
+ * });
44
+ *
45
+ * heap.add({ name: 'Low priority', priority: 1 });
46
+ * heap.add({ name: 'Critical fix', priority: 10 });
47
+ * heap.add({ name: 'Medium task', priority: 5 });
48
+ *
49
+ * // Highest priority first
50
+ * console.log(heap.poll()?.name); // 'Critical fix';
51
+ * console.log(heap.poll()?.name); // 'Medium task';
52
+ * console.log(heap.poll()?.name); // 'Low priority';
53
+ * @example
54
+ * // Real-time top score tracking
55
+ * const scores = new MaxHeap<number>();
56
+ *
57
+ * // Stream of scores coming in
58
+ * for (const score of [72, 85, 91, 68, 95, 78, 88]) {
59
+ * scores.add(score);
60
+ * }
61
+ *
62
+ * // Current highest score without removing
63
+ * console.log(scores.peek()); // 95;
64
+ * console.log(scores.size); // 7;
65
+ *
66
+ * // Remove top 2 scores
67
+ * console.log(scores.poll()); // 95;
68
+ * console.log(scores.poll()); // 91;
69
+ * console.log(scores.peek()); // 88;
24
70
  */
25
71
  export declare class MaxHeap<E = any, R = any> extends Heap<E, R> {
26
72
  /**
@@ -22,6 +22,65 @@ import { Heap } from './heap';
22
22
  * 7. Efficient Sorting Algorithms: For example, heap sort. MinHeap sort uses the properties of a heap to sort elements.
23
23
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prim's minimum spanning tree algorithm, which use heaps to improve performance.
24
24
  * @example
25
+ * // Merge K sorted arrays
26
+ * const arrays = [
27
+ * [1, 4, 7],
28
+ * [2, 5, 8],
29
+ * [3, 6, 9]
30
+ * ];
31
+ *
32
+ * // Use min heap to merge: track (value, arrayIndex, elementIndex)
33
+ * const heap = new MinHeap<[number, number, number]>([], {
34
+ * comparator: (a, b) => a[0] - b[0]
35
+ * });
36
+ *
37
+ * // Initialize with first element of each array
38
+ * arrays.forEach((arr, i) => heap.add([arr[0], i, 0]));
39
+ *
40
+ * const merged: number[] = [];
41
+ * while (heap.size > 0) {
42
+ * const [val, arrIdx, elemIdx] = heap.poll()!;
43
+ * merged.push(val);
44
+ * if (elemIdx + 1 < arrays[arrIdx].length) {
45
+ * heap.add([arrays[arrIdx][elemIdx + 1], arrIdx, elemIdx + 1]);
46
+ * }
47
+ * }
48
+ *
49
+ * console.log(merged); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
50
+ * @example
51
+ * // Dijkstra-style shortest distance tracking
52
+ * // Simulating distance updates: (distance, nodeId)
53
+ * const heap = new MinHeap<[number, string]>([], {
54
+ * comparator: (a, b) => a[0] - b[0]
55
+ * });
56
+ *
57
+ * heap.add([0, 'start']);
58
+ * heap.add([10, 'A']);
59
+ * heap.add([5, 'B']);
60
+ * heap.add([3, 'C']);
61
+ *
62
+ * // Process nearest node first
63
+ * console.log(heap.poll()); // [0, 'start'];
64
+ * console.log(heap.poll()); // [3, 'C'];
65
+ * console.log(heap.poll()); // [5, 'B'];
66
+ * console.log(heap.poll()); // [10, 'A'];
67
+ * @example
68
+ * // Running median with min heap (upper half)
69
+ * const upperHalf = new MinHeap<number>();
70
+ *
71
+ * // Add larger numbers to min heap
72
+ * for (const n of [5, 8, 3, 9, 1]) {
73
+ * upperHalf.add(n);
74
+ * }
75
+ *
76
+ * // Smallest of the upper half is always accessible
77
+ * console.log(upperHalf.peek()); // 1;
78
+ * console.log(upperHalf.size); // 5;
79
+ *
80
+ * // Remove smallest repeatedly
81
+ * console.log(upperHalf.poll()); // 1;
82
+ * console.log(upperHalf.poll()); // 3;
83
+ * console.log(upperHalf.peek()); // 5;
25
84
  */
26
85
  export declare class MinHeap<E = any, R = any> extends Heap<E, R> {
27
86
  /**