data-structure-typed 1.53.7 → 1.53.9

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 (164) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/dist/cjs/common/index.js +5 -0
  4. package/dist/cjs/common/index.js.map +1 -1
  5. package/dist/cjs/data-structures/base/iterable-entry-base.js +4 -4
  6. package/dist/cjs/data-structures/base/iterable-entry-base.js.map +1 -1
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +36 -17
  8. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +65 -36
  9. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +12 -8
  11. package/dist/cjs/data-structures/binary-tree/avl-tree.js +19 -6
  12. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +53 -40
  14. package/dist/cjs/data-structures/binary-tree/binary-tree.js +76 -72
  15. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/bst.d.ts +87 -52
  17. package/dist/cjs/data-structures/binary-tree/bst.js +111 -63
  18. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  19. package/dist/cjs/data-structures/binary-tree/index.d.ts +1 -1
  20. package/dist/cjs/data-structures/binary-tree/index.js +1 -1
  21. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -1
  22. package/dist/cjs/data-structures/binary-tree/{rb-tree.d.ts → red-black-tree.d.ts} +83 -10
  23. package/dist/cjs/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +92 -45
  24. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -0
  25. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +34 -18
  26. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +66 -40
  27. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  28. package/dist/cjs/data-structures/graph/abstract-graph.js +2 -2
  29. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  30. package/dist/cjs/data-structures/hash/hash-map.d.ts +31 -1
  31. package/dist/cjs/data-structures/hash/hash-map.js +35 -5
  32. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  33. package/dist/cjs/data-structures/heap/heap.d.ts +20 -3
  34. package/dist/cjs/data-structures/heap/heap.js +31 -11
  35. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  36. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +46 -11
  37. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +68 -21
  38. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  39. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +44 -11
  40. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +70 -26
  41. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  42. package/dist/cjs/data-structures/queue/deque.d.ts +37 -8
  43. package/dist/cjs/data-structures/queue/deque.js +73 -29
  44. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  45. package/dist/cjs/data-structures/queue/queue.d.ts +41 -1
  46. package/dist/cjs/data-structures/queue/queue.js +51 -9
  47. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  48. package/dist/cjs/data-structures/stack/stack.d.ts +27 -10
  49. package/dist/cjs/data-structures/stack/stack.js +39 -20
  50. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  51. package/dist/cjs/data-structures/trie/trie.d.ts +12 -13
  52. package/dist/cjs/data-structures/trie/trie.js +12 -13
  53. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  54. package/dist/cjs/interfaces/binary-tree.d.ts +3 -4
  55. package/dist/cjs/types/data-structures/base/base.d.ts +1 -1
  56. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -3
  57. package/dist/cjs/types/data-structures/binary-tree/avl-tree.d.ts +2 -3
  58. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -3
  59. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +3 -4
  60. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -5
  61. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +4 -5
  62. package/dist/mjs/common/index.js +5 -0
  63. package/dist/mjs/common/index.js.map +1 -1
  64. package/dist/mjs/data-structures/base/iterable-entry-base.js +4 -4
  65. package/dist/mjs/data-structures/base/iterable-entry-base.js.map +1 -1
  66. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +36 -17
  67. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +65 -36
  68. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  69. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +12 -8
  70. package/dist/mjs/data-structures/binary-tree/avl-tree.js +19 -6
  71. package/dist/mjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  72. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +53 -40
  73. package/dist/mjs/data-structures/binary-tree/binary-tree.js +76 -72
  74. package/dist/mjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  75. package/dist/mjs/data-structures/binary-tree/bst.d.ts +87 -52
  76. package/dist/mjs/data-structures/binary-tree/bst.js +127 -79
  77. package/dist/mjs/data-structures/binary-tree/bst.js.map +1 -1
  78. package/dist/mjs/data-structures/binary-tree/index.d.ts +1 -1
  79. package/dist/mjs/data-structures/binary-tree/index.js +1 -1
  80. package/dist/mjs/data-structures/binary-tree/index.js.map +1 -1
  81. package/dist/mjs/data-structures/binary-tree/{rb-tree.d.ts → red-black-tree.d.ts} +83 -10
  82. package/dist/mjs/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +92 -45
  83. package/dist/mjs/data-structures/binary-tree/red-black-tree.js.map +1 -0
  84. package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +34 -18
  85. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +64 -38
  86. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  87. package/dist/mjs/data-structures/graph/abstract-graph.js +2 -2
  88. package/dist/mjs/data-structures/graph/abstract-graph.js.map +1 -1
  89. package/dist/mjs/data-structures/hash/hash-map.d.ts +31 -1
  90. package/dist/mjs/data-structures/hash/hash-map.js +35 -5
  91. package/dist/mjs/data-structures/hash/hash-map.js.map +1 -1
  92. package/dist/mjs/data-structures/heap/heap.d.ts +20 -3
  93. package/dist/mjs/data-structures/heap/heap.js +31 -11
  94. package/dist/mjs/data-structures/heap/heap.js.map +1 -1
  95. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +46 -11
  96. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +68 -21
  97. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  98. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +44 -11
  99. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +70 -26
  100. package/dist/mjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  101. package/dist/mjs/data-structures/queue/deque.d.ts +37 -8
  102. package/dist/mjs/data-structures/queue/deque.js +73 -29
  103. package/dist/mjs/data-structures/queue/deque.js.map +1 -1
  104. package/dist/mjs/data-structures/queue/queue.d.ts +41 -1
  105. package/dist/mjs/data-structures/queue/queue.js +51 -9
  106. package/dist/mjs/data-structures/queue/queue.js.map +1 -1
  107. package/dist/mjs/data-structures/stack/stack.d.ts +27 -10
  108. package/dist/mjs/data-structures/stack/stack.js +39 -20
  109. package/dist/mjs/data-structures/stack/stack.js.map +1 -1
  110. package/dist/mjs/data-structures/trie/trie.d.ts +12 -13
  111. package/dist/mjs/data-structures/trie/trie.js +12 -13
  112. package/dist/mjs/data-structures/trie/trie.js.map +1 -1
  113. package/dist/mjs/interfaces/binary-tree.d.ts +3 -4
  114. package/dist/mjs/types/data-structures/base/base.d.ts +1 -1
  115. package/dist/mjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -3
  116. package/dist/mjs/types/data-structures/binary-tree/avl-tree.d.ts +2 -3
  117. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -3
  118. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +3 -4
  119. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -5
  120. package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.d.ts +4 -5
  121. package/dist/umd/data-structure-typed.js +722 -356
  122. package/dist/umd/data-structure-typed.min.js +3 -3
  123. package/dist/umd/data-structure-typed.min.js.map +1 -1
  124. package/package.json +6 -6
  125. package/src/common/index.ts +7 -1
  126. package/src/data-structures/base/iterable-entry-base.ts +4 -4
  127. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +82 -55
  128. package/src/data-structures/binary-tree/avl-tree.ts +32 -15
  129. package/src/data-structures/binary-tree/binary-tree.ts +89 -84
  130. package/src/data-structures/binary-tree/bst.ts +149 -97
  131. package/src/data-structures/binary-tree/index.ts +1 -1
  132. package/src/data-structures/binary-tree/{rb-tree.ts → red-black-tree.ts} +105 -55
  133. package/src/data-structures/binary-tree/tree-multi-map.ts +81 -51
  134. package/src/data-structures/graph/abstract-graph.ts +2 -2
  135. package/src/data-structures/hash/hash-map.ts +37 -7
  136. package/src/data-structures/heap/heap.ts +33 -10
  137. package/src/data-structures/linked-list/doubly-linked-list.ts +75 -21
  138. package/src/data-structures/linked-list/singly-linked-list.ts +77 -27
  139. package/src/data-structures/queue/deque.ts +72 -28
  140. package/src/data-structures/queue/queue.ts +50 -7
  141. package/src/data-structures/stack/stack.ts +39 -20
  142. package/src/data-structures/trie/trie.ts +8 -3
  143. package/src/interfaces/binary-tree.ts +3 -13
  144. package/src/types/data-structures/base/base.ts +1 -1
  145. package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +2 -4
  146. package/src/types/data-structures/binary-tree/avl-tree.ts +2 -4
  147. package/src/types/data-structures/binary-tree/binary-tree.ts +3 -3
  148. package/src/types/data-structures/binary-tree/bst.ts +3 -5
  149. package/src/types/data-structures/binary-tree/rb-tree.ts +4 -6
  150. package/src/types/data-structures/binary-tree/tree-multi-map.ts +4 -6
  151. package/test/integration/index.html +3 -3
  152. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.ts +3 -3
  153. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +12 -12
  154. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +10 -10
  155. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +45 -45
  156. package/test/unit/data-structures/binary-tree/bst.test.ts +90 -96
  157. package/test/unit/data-structures/binary-tree/data/cost-of-living-by-country.ts +259 -0
  158. package/test/unit/data-structures/binary-tree/overall.test.ts +2 -0
  159. package/test/unit/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +67 -92
  160. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +10 -10
  161. package/test/unit/data-structures/graph/directed-graph.test.ts +4 -4
  162. package/test/unit/data-structures/hash/hash-map.test.ts +12 -12
  163. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +0 -1
  164. package/dist/mjs/data-structures/binary-tree/rb-tree.js.map +0 -1
@@ -1,6 +1,7 @@
1
1
  import { BinaryTree, BinaryTreeNode } from './binary-tree';
2
2
  import { Queue } from '../queue';
3
3
  import { isComparable } from '../../utils';
4
+ import { Range } from '../../common';
4
5
  export class BSTNode extends BinaryTreeNode {
5
6
  parent;
6
7
  constructor(key, value) {
@@ -58,32 +59,48 @@ export class BSTNode extends BinaryTreeNode {
58
59
  * 6. Balance Variability: Can become unbalanced; special types maintain balance.
59
60
  * 7. No Auto-Balancing: Standard BSTs don't automatically balance themselves.
60
61
  * @example
61
- * // Find kth smallest element
62
- * // Create a BST with some elements
63
- * const bst = new BST<number>([5, 3, 7, 1, 4, 6, 8]);
64
- * const sortedKeys = bst.dfs(node => node.key, 'IN');
62
+ * // Merge 3 sorted datasets
63
+ * const dataset1 = new BST<number, string>([
64
+ * [1, 'A'],
65
+ * [7, 'G']
66
+ * ]);
67
+ * const dataset2 = [
68
+ * [2, 'B'],
69
+ * [6, 'F']
70
+ * ];
71
+ * const dataset3 = new BST<number, string>([
72
+ * [3, 'C'],
73
+ * [5, 'E'],
74
+ * [4, 'D']
75
+ * ]);
65
76
  *
66
- * // Helper function to find kth smallest
67
- * const findKthSmallest = (k: number): number | undefined => {
68
- * return sortedKeys[k - 1];
69
- * };
77
+ * // Merge datasets into a single BinarySearchTree
78
+ * const merged = new BST<number, string>(dataset1);
79
+ * merged.addMany(dataset2);
80
+ * merged.merge(dataset3);
70
81
  *
71
- * // Assertions
72
- * console.log(findKthSmallest(1)); // 1
73
- * console.log(findKthSmallest(3)); // 4
74
- * console.log(findKthSmallest(7)); // 8
82
+ * // Verify merged dataset is in sorted order
83
+ * console.log([...merged.values()]); // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
75
84
  * @example
76
85
  * // Find elements in a range
77
86
  * const bst = new BST<number>([10, 5, 15, 3, 7, 12, 18]);
78
87
  * console.log(bst.search(new Range(5, 10))); // [10, 5, 7]
79
- * console.log(bst.search(new Range(4, 12))); // [10, 12, 5, 7]
88
+ * console.log(bst.rangeSearch([4, 12], node => node.key.toString())); // ['10', '12', '5', '7']
80
89
  * console.log(bst.search(new Range(4, 12, true, false))); // [10, 5, 7]
81
- * console.log(bst.search(new Range(15, 20))); // [15, 18]
90
+ * console.log(bst.rangeSearch([15, 20])); // [15, 18]
82
91
  * console.log(bst.search(new Range(15, 20, false))); // [18]
83
92
  * @example
84
93
  * // Find lowest common ancestor
85
94
  * const bst = new BST<number>([20, 10, 30, 5, 15, 25, 35, 3, 7, 12, 18]);
86
95
  *
96
+ * // LCA helper function
97
+ * const findLCA = (num1: number, num2: number): number | undefined => {
98
+ * const path1 = bst.getPathToRoot(num1);
99
+ * const path2 = bst.getPathToRoot(num2);
100
+ * // Find the first common ancestor
101
+ * return findFirstCommon(path1, path2);
102
+ * };
103
+ *
87
104
  * function findFirstCommon(arr1: number[], arr2: number[]): number | undefined {
88
105
  * for (const num of arr1) {
89
106
  * if (arr2.indexOf(num) !== -1) {
@@ -93,14 +110,6 @@ export class BSTNode extends BinaryTreeNode {
93
110
  * return undefined;
94
111
  * }
95
112
  *
96
- * // LCA helper function
97
- * const findLCA = (num1: number, num2: number): number | undefined => {
98
- * const path1 = bst.getPathToRoot(num1);
99
- * const path2 = bst.getPathToRoot(num2);
100
- * // Find the first common ancestor
101
- * return findFirstCommon(path1, path2);
102
- * };
103
- *
104
113
  * // Assertions
105
114
  * console.log(findLCA(3, 10)); // 7
106
115
  * console.log(findLCA(5, 35)); // 15
@@ -118,9 +127,9 @@ export class BST extends BinaryTree {
118
127
  constructor(keysNodesEntriesOrRaws = [], options) {
119
128
  super([], options);
120
129
  if (options) {
121
- const { extractComparable, isReverse } = options;
122
- if (typeof extractComparable === 'function')
123
- this._extractComparable = extractComparable;
130
+ const { specifyComparable, isReverse } = options;
131
+ if (typeof specifyComparable === 'function')
132
+ this._specifyComparable = specifyComparable;
124
133
  if (isReverse !== undefined)
125
134
  this._isReverse = isReverse;
126
135
  }
@@ -144,6 +153,42 @@ export class BST extends BinaryTree {
144
153
  get isReverse() {
145
154
  return this._isReverse;
146
155
  }
156
+ _comparator = (a, b) => {
157
+ if (isComparable(a) && isComparable(b)) {
158
+ if (a > b)
159
+ return 1;
160
+ if (a < b)
161
+ return -1;
162
+ return 0;
163
+ }
164
+ if (this._specifyComparable) {
165
+ if (this._specifyComparable(a) > this._specifyComparable(b))
166
+ return 1;
167
+ if (this._specifyComparable(a) < this._specifyComparable(b))
168
+ return -1;
169
+ return 0;
170
+ }
171
+ if (typeof a === 'object' || typeof b === 'object') {
172
+ throw TypeError(`When comparing object types, a custom specifyComparable must be defined in the constructor's options parameter.`);
173
+ }
174
+ return 0;
175
+ };
176
+ /**
177
+ * The function returns the value of the _comparator property.
178
+ * @returns The `_comparator` property is being returned.
179
+ */
180
+ get comparator() {
181
+ return this._comparator;
182
+ }
183
+ _specifyComparable;
184
+ /**
185
+ * This function returns the value of the `_specifyComparable` property.
186
+ * @returns The method `specifyComparable()` is being returned, which is a getter method for the
187
+ * `_specifyComparable` property.
188
+ */
189
+ get specifyComparable() {
190
+ return this._specifyComparable;
191
+ }
147
192
  /**
148
193
  * The function creates a new BSTNode with the given key and value and returns it.
149
194
  * @param {K} key - The key parameter is of type K, which represents the type of the key for the node
@@ -156,37 +201,27 @@ export class BST extends BinaryTree {
156
201
  return new BSTNode(key, this._isMapMode ? undefined : value);
157
202
  }
158
203
  /**
159
- * The function creates a new binary search tree with the specified options.
160
- * @param [options] - The `options` parameter is an optional object that allows you to customize the
161
- * behavior of the `createTree` method. It accepts a partial `BSTOptions` object, which has the
162
- * following properties:
163
- * @returns a new instance of the BST class with the provided options.
204
+ * Time Complexity: O(1)
205
+ * Space Complexity: O(1)
206
+ *
207
+ * The `createTree` function in TypeScript overrides the default options with the provided options to
208
+ * create a new Binary Search Tree.
209
+ * @param [options] - The `options` parameter in the `createTree` method is an optional object that
210
+ * can contain the following properties:
211
+ * @returns A new instance of a Binary Search Tree (BST) is being returned with the specified options
212
+ * and properties inherited from the current instance.
164
213
  */
214
+ // @ts-ignore
165
215
  createTree(options) {
166
216
  return new BST([], {
167
217
  iterationType: this.iterationType,
168
218
  isMapMode: this._isMapMode,
169
- extractComparable: this._extractComparable,
219
+ specifyComparable: this._specifyComparable,
170
220
  toEntryFn: this._toEntryFn,
171
221
  isReverse: this._isReverse,
172
222
  ...options
173
223
  });
174
224
  }
175
- /**
176
- * The function overrides a method and converts a key, value pair or entry or raw element to a node.
177
- * @param {BTNRep<K, V, NODE> | R} keyNodeEntryOrRaw - A variable that can be of
178
- * type R or BTNRep<K, V, NODE>. It represents either a key, a node, an entry, or a raw
179
- * element.
180
- * @param {V} [value] - The `value` parameter is an optional value of type `V`. It represents the
181
- * value associated with a key in a key-value pair.
182
- * @returns either a NODE object or undefined.
183
- */
184
- keyValueNodeEntryRawToNodeAndValue(keyNodeEntryOrRaw, value) {
185
- const [node, entryValue] = super.keyValueNodeEntryRawToNodeAndValue(keyNodeEntryOrRaw, value);
186
- if (node === null)
187
- return [undefined, undefined];
188
- return [node, value ?? entryValue];
189
- }
190
225
  /**
191
226
  * Time Complexity: O(log n)
192
227
  * Space Complexity: O(log n)
@@ -224,7 +259,7 @@ export class BST extends BinaryTree {
224
259
  * this._DEFAULT_COMPARATOR`.
225
260
  */
226
261
  isKey(key) {
227
- return isComparable(key, this._extractComparable !== undefined);
262
+ return isComparable(key, this._specifyComparable !== undefined);
228
263
  }
229
264
  /**
230
265
  * Time Complexity: O(log n)
@@ -238,7 +273,7 @@ export class BST extends BinaryTree {
238
273
  * @returns a boolean value.
239
274
  */
240
275
  add(keyNodeEntryOrRaw, value) {
241
- const [newNode, newValue] = this.keyValueNodeEntryRawToNodeAndValue(keyNodeEntryOrRaw, value);
276
+ const [newNode, newValue] = this._keyValueNodeEntryRawToNodeAndValue(keyNodeEntryOrRaw, value);
242
277
  if (newNode === undefined)
243
278
  return false;
244
279
  if (this._root === undefined) {
@@ -532,6 +567,31 @@ export class BST extends BinaryTree {
532
567
  }
533
568
  return ans;
534
569
  }
570
+ /**
571
+ * Time Complexity: O(log n)
572
+ * Space Complexity: O(n)
573
+ *
574
+ * The `rangeSearch` function searches for nodes within a specified range in a binary search tree.
575
+ * @param {Range<K> | [K, K]} range - The `range` parameter in the `rangeSearch` function can be
576
+ * either a `Range` object or an array of two elements representing the range boundaries.
577
+ * @param {C} callback - The `callback` parameter in the `rangeSearch` function is a callback
578
+ * function that is used to process each node that is found within the specified range during the
579
+ * search operation. It is of type `NodeCallback<NODE>`, where `NODE` is the type of nodes in the
580
+ * data structure.
581
+ * @param {BTNRep<K, V, NODE> | R} startNode - The `startNode` parameter in the `rangeSearch`
582
+ * function represents the node from which the search for nodes within the specified range will
583
+ * begin. It is the starting point for the range search operation.
584
+ * @param {IterationType} iterationType - The `iterationType` parameter in the `rangeSearch` function
585
+ * is used to specify the type of iteration to be performed during the search operation. It has a
586
+ * default value of `this.iterationType`, which suggests that it is likely a property of the class or
587
+ * object that the `rangeSearch`
588
+ * @returns The `rangeSearch` function is returning the result of calling the `search` method with
589
+ * the specified parameters.
590
+ */
591
+ rangeSearch(range, callback = this._DEFAULT_NODE_CALLBACK, startNode = this._root, iterationType = this.iterationType) {
592
+ const searchRange = range instanceof Range ? range : new Range(range[0], range[1]);
593
+ return this.search(searchRange, false, callback, startNode, iterationType);
594
+ }
535
595
  /**
536
596
  * Time Complexity: O(log n)
537
597
  * Space Complexity: O(1)
@@ -790,41 +850,29 @@ export class BST extends BinaryTree {
790
850
  }
791
851
  return balanced;
792
852
  }
793
- _comparator = (a, b) => {
794
- if (isComparable(a) && isComparable(b)) {
795
- if (a > b)
796
- return 1;
797
- if (a < b)
798
- return -1;
799
- return 0;
853
+ // @ts-ignore
854
+ map(callback, options, thisArg) {
855
+ const newTree = new BST([], options);
856
+ let index = 0;
857
+ for (const [key, value] of this) {
858
+ newTree.add(callback.call(thisArg, key, value, index++, this));
800
859
  }
801
- if (this._extractComparable) {
802
- if (this._extractComparable(a) > this._extractComparable(b))
803
- return 1;
804
- if (this._extractComparable(a) < this._extractComparable(b))
805
- return -1;
806
- return 0;
807
- }
808
- if (typeof a === 'object' || typeof b === 'object') {
809
- throw TypeError(`When comparing object types, a custom extractComparable must be defined in the constructor's options parameter.`);
810
- }
811
- return 0;
812
- };
813
- /**
814
- * The function returns the value of the _comparator property.
815
- * @returns The `_comparator` property is being returned.
816
- */
817
- get comparator() {
818
- return this._comparator;
860
+ return newTree;
819
861
  }
820
- _extractComparable;
821
862
  /**
822
- * This function returns the value of the `_extractComparable` property.
823
- * @returns The method `extractComparable()` is being returned, which is a getter method for the
824
- * `_extractComparable` property.
863
+ * The function overrides a method and converts a key, value pair or entry or raw element to a node.
864
+ * @param {BTNRep<K, V, NODE> | R} keyNodeEntryOrRaw - A variable that can be of
865
+ * type R or BTNRep<K, V, NODE>. It represents either a key, a node, an entry, or a raw
866
+ * element.
867
+ * @param {V} [value] - The `value` parameter is an optional value of type `V`. It represents the
868
+ * value associated with a key in a key-value pair.
869
+ * @returns either a NODE object or undefined.
825
870
  */
826
- get extractComparable() {
827
- return this._extractComparable;
871
+ _keyValueNodeEntryRawToNodeAndValue(keyNodeEntryOrRaw, value) {
872
+ const [node, entryValue] = super._keyValueNodeEntryRawToNodeAndValue(keyNodeEntryOrRaw, value);
873
+ if (node === null)
874
+ return [undefined, undefined];
875
+ return [node, value ?? entryValue];
828
876
  }
829
877
  /**
830
878
  * The function sets the root of a tree-like structure and updates the parent property of the new
@@ -1 +1 @@
1
- {"version":3,"file":"bst.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/bst.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bst.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/bst.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,6 @@ export * from './bst';
3
3
  export * from './binary-indexed-tree';
4
4
  export * from './segment-tree';
5
5
  export * from './avl-tree';
6
- export * from './rb-tree';
6
+ export * from './red-black-tree';
7
7
  export * from './avl-tree-multi-map';
8
8
  export * from './tree-multi-map';
@@ -3,7 +3,7 @@ export * from './bst';
3
3
  export * from './binary-indexed-tree';
4
4
  export * from './segment-tree';
5
5
  export * from './avl-tree';
6
- export * from './rb-tree';
6
+ export * from './red-black-tree';
7
7
  export * from './avl-tree-multi-map';
8
8
  export * from './tree-multi-map';
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BinaryTreeDeleteResult, BTNRep, CRUD, RBTNColor, RBTreeOptions, RedBlackTreeNested, RedBlackTreeNodeNested } from '../../types';
1
+ import type { BinaryTreeDeleteResult, BTNRep, CRUD, EntryCallback, RBTNColor, RedBlackTreeOptions, RedBlackTreeNodeNested } from '../../types';
2
2
  import { BST, BSTNode } from './bst';
3
3
  import { IBinaryTree } from '../../interfaces';
4
4
  export declare class RedBlackTreeNode<K = any, V = any, NODE extends RedBlackTreeNode<K, V, NODE> = RedBlackTreeNodeNested<K, V>> extends BSTNode<K, V, NODE> {
@@ -29,19 +29,68 @@ export declare class RedBlackTreeNode<K = any, V = any, NODE extends RedBlackTre
29
29
  /**
30
30
  * 1. Efficient self-balancing, but not completely balanced. Compared with AVLTree, the addition and deletion efficiency is high but the query efficiency is slightly lower.
31
31
  * 2. It is BST itself. Compared with Heap which is not completely ordered, RedBlackTree is completely ordered.
32
+ * @example
33
+ * // Find elements in a range
34
+ * const bst = new RedBlackTree<number>([10, 5, 15, 3, 7, 12, 18]);
35
+ * console.log(bst.search(new Range(5, 10))); // [5, 10, 7]
36
+ * console.log(bst.search(new Range(4, 12))); // [5, 10, 12, 7]
37
+ * console.log(bst.search(new Range(15, 20))); // [15, 18]
38
+ * @example
39
+ * // using Red-Black Tree as a price-based index for stock data
40
+ * // Define the structure of individual stock records
41
+ * interface StockRecord {
42
+ * price: number; // Stock price (key for indexing)
43
+ * symbol: string; // Stock ticker symbol
44
+ * volume: number; // Trade volume
45
+ * }
46
+ *
47
+ * // Simulate stock market data as it might come from an external feed
48
+ * const marketStockData: StockRecord[] = [
49
+ * { price: 142.5, symbol: 'AAPL', volume: 1000000 },
50
+ * { price: 335.2, symbol: 'MSFT', volume: 800000 },
51
+ * { price: 3285.04, symbol: 'AMZN', volume: 500000 },
52
+ * { price: 267.98, symbol: 'META', volume: 750000 },
53
+ * { price: 234.57, symbol: 'GOOGL', volume: 900000 }
54
+ * ];
55
+ *
56
+ * // Extend the stock record type to include metadata for database usage
57
+ * type StockTableRecord = StockRecord & { lastUpdated: Date };
58
+ *
59
+ * // Create a Red-Black Tree to index stock records by price
60
+ * // Simulates a database index with stock price as the key for quick lookups
61
+ * const priceIndex = new RedBlackTree<number, StockTableRecord, StockRecord>(marketStockData, {
62
+ * toEntryFn: stockRecord => [
63
+ * stockRecord.price, // Use stock price as the key
64
+ * {
65
+ * ...stockRecord,
66
+ * lastUpdated: new Date() // Add a timestamp for when the record was indexed
67
+ * }
68
+ * ]
69
+ * });
70
+ *
71
+ * // Query the stock with the highest price
72
+ * const highestPricedStock = priceIndex.getRightMost();
73
+ * console.log(priceIndex.get(highestPricedStock)?.symbol); // 'AMZN' // Amazon has the highest price
74
+ *
75
+ * // Query stocks within a specific price range (200 to 400)
76
+ * const stocksInRange = priceIndex.rangeSearch(
77
+ * [200, 400], // Price range
78
+ * node => priceIndex.get(node)?.symbol // Extract stock symbols for the result
79
+ * );
80
+ * console.log(stocksInRange); // ['GOOGL', 'MSFT', 'META']
32
81
  */
33
- export declare class RedBlackTree<K = any, V = any, R = object, NODE extends RedBlackTreeNode<K, V, NODE> = RedBlackTreeNode<K, V, RedBlackTreeNodeNested<K, V>>, TREE extends RedBlackTree<K, V, R, NODE, TREE> = RedBlackTree<K, V, R, NODE, RedBlackTreeNested<K, V, R, NODE>>> extends BST<K, V, R, NODE, TREE> implements IBinaryTree<K, V, R, NODE, TREE> {
82
+ export declare class RedBlackTree<K = any, V = any, R = object, NODE extends RedBlackTreeNode<K, V, NODE> = RedBlackTreeNode<K, V, RedBlackTreeNodeNested<K, V>>> extends BST<K, V, R, NODE> implements IBinaryTree<K, V, R, NODE> {
34
83
  /**
35
84
  * This is the constructor function for a Red-Black Tree data structure in TypeScript.
36
85
  * @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter is an
37
86
  * iterable object that can contain either keys, nodes, entries, or raw elements. It is used to
38
- * initialize the RBTree with the provided elements.
87
+ * initialize the RedBlackTree with the provided elements.
39
88
  * @param [options] - The `options` parameter is an optional object that can be passed to the
40
- * constructor. It is of type `RBTreeOptions<K, V, R>`. This object can contain various options for
89
+ * constructor. It is of type `RedBlackTreeOptions<K, V, R>`. This object can contain various options for
41
90
  * configuring the behavior of the Red-Black Tree. The specific properties and their meanings would
42
91
  * depend on the implementation
43
92
  */
44
- constructor(keysNodesEntriesOrRaws?: Iterable<R | BTNRep<K, V, NODE>>, options?: RBTreeOptions<K, V, R>);
93
+ constructor(keysNodesEntriesOrRaws?: Iterable<R | BTNRep<K, V, NODE>>, options?: RedBlackTreeOptions<K, V, R>);
45
94
  protected _root: NODE | undefined;
46
95
  /**
47
96
  * The function returns the root node of a tree or undefined if there is no root.
@@ -64,12 +113,15 @@ export declare class RedBlackTree<K = any, V = any, R = object, NODE extends Red
64
113
  */
65
114
  createNode(key: K, value?: V, color?: RBTNColor): NODE;
66
115
  /**
67
- * The function creates a new Red-Black Tree with the specified options.
68
- * @param [options] - The `options` parameter is an optional object that contains additional
69
- * configuration options for creating the Red-Black Tree. It has the following properties:
70
- * @returns a new instance of a RedBlackTree object.
116
+ * The function `createTree` overrides the default implementation to create a Red-Black Tree with
117
+ * specified options in TypeScript.
118
+ * @param [options] - The `options` parameter in the `createTree` method is of type `RedBlackTreeOptions<K,
119
+ * V, R>`, which is a generic type with three type parameters `K`, `V`, and `R`. This parameter
120
+ * allows you to pass additional configuration options when creating a new Red-
121
+ * @returns A new instance of a RedBlackTree with the specified options and properties from the
122
+ * current object is being returned.
71
123
  */
72
- createTree(options?: RBTreeOptions<K, V, R>): TREE;
124
+ createTree(options?: RedBlackTreeOptions<K, V, R>): RedBlackTree<K, V, R, RedBlackTreeNode<K, V, RedBlackTreeNodeNested<K, V>>>;
73
125
  /**
74
126
  * Time Complexity: O(1)
75
127
  * Space Complexity: O(1)
@@ -120,6 +172,27 @@ export declare class RedBlackTree<K = any, V = any, R = object, NODE extends Red
120
172
  * balancing is needed.
121
173
  */
122
174
  delete(keyNodeEntryOrRaw: BTNRep<K, V, NODE> | R): BinaryTreeDeleteResult<NODE>[];
175
+ /**
176
+ * Time Complexity: O(n)
177
+ * Space Complexity: O(n)
178
+ *
179
+ * The `map` function in TypeScript overrides the default behavior to create a new Red-Black Tree by
180
+ * applying a callback to each entry in the original tree.
181
+ * @param callback - A function that will be called for each entry in the tree, with parameters
182
+ * representing the key, value, index, and the tree itself. It should return an entry for the new
183
+ * tree.
184
+ * @param [options] - The `options` parameter in the `map` method is of type `RedBlackTreeOptions<MK, MV,
185
+ * MR>`. This parameter allows you to specify additional options or configurations for the Red-Black
186
+ * Tree that will be created during the mapping process. These options could include things like
187
+ * custom comparators
188
+ * @param {any} [thisArg] - The `thisArg` parameter in the `override map` function is used to specify
189
+ * the value of `this` when executing the `callback` function. It allows you to set the context
190
+ * (value of `this`) for the callback function. This can be useful when you want to access properties
191
+ * or
192
+ * @returns A new Red-Black Tree is being returned, where each entry has been transformed using the
193
+ * provided callback function.
194
+ */
195
+ map<MK, MV, MR>(callback: EntryCallback<K, V | undefined, [MK, MV]>, options?: RedBlackTreeOptions<MK, MV, MR>, thisArg?: any): RedBlackTree<MK, MV, MR, RedBlackTreeNode<MK, MV, RedBlackTreeNodeNested<MK, MV>>>;
123
196
  /**
124
197
  * Time Complexity: O(1)
125
198
  * Space Complexity: O(1)