data-structure-typed 1.54.1 → 1.54.3
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.
- package/CHANGELOG.md +1 -1
- package/LICENSE +2 -2
- package/README.md +14 -1
- package/README_zh-CN.md +1 -1
- package/benchmark/report.html +4 -1
- package/benchmark/report.json +76 -17
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +8 -7
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +12 -12
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +2 -2
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +25 -21
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +12 -8
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +111 -225
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +177 -144
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +59 -53
- package/dist/cjs/data-structures/binary-tree/bst.js +75 -119
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +18 -18
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js +6 -6
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +19 -19
- package/dist/cjs/data-structures/binary-tree/tree-counter.js +12 -12
- package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +12 -12
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +2 -2
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
- package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/index.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/index.js +1 -1
- package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/{rb-tree.js → red-black-tree.js} +1 -1
- package/dist/cjs/types/data-structures/binary-tree/red-black-tree.js.map +1 -0
- package/dist/cjs/types/data-structures/binary-tree/tree-counter.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/cjs/utils/utils.d.ts +2 -2
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +9 -8
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +12 -12
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +3 -3
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +25 -21
- package/dist/esm/data-structures/binary-tree/avl-tree.js +13 -9
- package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +111 -225
- package/dist/esm/data-structures/binary-tree/binary-tree.js +181 -148
- package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/bst.d.ts +59 -53
- package/dist/esm/data-structures/binary-tree/bst.js +76 -120
- package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +18 -18
- package/dist/esm/data-structures/binary-tree/red-black-tree.js +7 -7
- package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +19 -19
- package/dist/esm/data-structures/binary-tree/tree-counter.js +13 -13
- package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +12 -12
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js +3 -3
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
- package/dist/esm/types/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/esm/types/data-structures/binary-tree/index.d.ts +1 -1
- package/dist/esm/types/data-structures/binary-tree/index.js +1 -1
- package/dist/esm/types/data-structures/binary-tree/index.js.map +1 -1
- package/dist/esm/types/data-structures/binary-tree/red-black-tree.js +2 -0
- package/dist/esm/types/data-structures/binary-tree/red-black-tree.js.map +1 -0
- package/dist/esm/types/data-structures/binary-tree/tree-counter.d.ts +1 -1
- package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/esm/utils/utils.d.ts +2 -2
- package/dist/umd/data-structure-typed.js +296 -279
- package/dist/umd/data-structure-typed.min.js +5 -12
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +9 -14
- package/src/data-structures/binary-tree/avl-tree-counter.ts +30 -23
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +25 -15
- package/src/data-structures/binary-tree/avl-tree.ts +35 -29
- package/src/data-structures/binary-tree/binary-tree.ts +469 -252
- package/src/data-structures/binary-tree/bst.ts +141 -143
- package/src/data-structures/binary-tree/red-black-tree.ts +27 -35
- package/src/data-structures/binary-tree/tree-counter.ts +33 -27
- package/src/data-structures/binary-tree/tree-multi-map.ts +25 -17
- package/src/types/data-structures/binary-tree/binary-tree.ts +1 -0
- package/src/types/data-structures/binary-tree/bst.ts +1 -1
- package/src/types/data-structures/binary-tree/index.ts +1 -1
- package/src/types/data-structures/binary-tree/tree-counter.ts +1 -1
- package/src/types/data-structures/binary-tree/tree-multi-map.ts +1 -1
- package/src/utils/utils.ts +2 -2
- package/test/integration/compile.mjs +135 -0
- package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +71 -0
- package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +81 -0
- package/test/performance/reportor.mjs +505 -0
- package/test/performance/reportor.ts +1 -1
- package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +7 -7
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +5 -6
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +72 -5
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +132 -82
- package/test/unit/data-structures/binary-tree/bst.test.ts +12 -12
- package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +4 -12
- package/test/unit/data-structures/binary-tree/tree-counter.test.ts +4 -4
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +6 -6
- package/test/utils/json2html.ts +0 -154
- package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +0 -1
- package/dist/esm/types/data-structures/binary-tree/rb-tree.js +0 -2
- package/dist/esm/types/data-structures/binary-tree/rb-tree.js.map +0 -1
- /package/dist/cjs/types/data-structures/binary-tree/{rb-tree.d.ts → red-black-tree.d.ts} +0 -0
- /package/dist/esm/types/data-structures/binary-tree/{rb-tree.d.ts → red-black-tree.d.ts} +0 -0
- /package/src/types/data-structures/binary-tree/{rb-tree.ts → red-black-tree.ts} +0 -0
- /package/test/performance/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +0 -0
|
@@ -3,6 +3,7 @@ import { Queue } from '../queue';
|
|
|
3
3
|
import { isComparable } from '../../utils';
|
|
4
4
|
import { Range } from '../../common';
|
|
5
5
|
export class BSTNode extends BinaryTreeNode {
|
|
6
|
+
parent = undefined;
|
|
6
7
|
/**
|
|
7
8
|
* This TypeScript constructor function initializes an instance with a key and an optional value.
|
|
8
9
|
* @param {K} key - The `key` parameter is typically used to uniquely identify an object or element
|
|
@@ -15,7 +16,6 @@ export class BSTNode extends BinaryTreeNode {
|
|
|
15
16
|
constructor(key, value) {
|
|
16
17
|
super(key, value);
|
|
17
18
|
}
|
|
18
|
-
parent = undefined;
|
|
19
19
|
_left = undefined;
|
|
20
20
|
get left() {
|
|
21
21
|
return this._left;
|
|
@@ -107,7 +107,7 @@ export class BST extends BinaryTree {
|
|
|
107
107
|
* This TypeScript constructor initializes a binary search tree with optional options and adds
|
|
108
108
|
* elements if provided.
|
|
109
109
|
* @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
|
|
110
|
-
* iterable that can contain elements of type `
|
|
110
|
+
* iterable that can contain elements of type `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined ` or `R`. It is used to
|
|
111
111
|
* initialize the binary search tree with keys, nodes, entries, or raw data.
|
|
112
112
|
* @param [options] - The `options` parameter is an optional object that can contain the following
|
|
113
113
|
* properties:
|
|
@@ -199,7 +199,7 @@ export class BST extends BinaryTree {
|
|
|
199
199
|
*
|
|
200
200
|
* The function ensures the existence of a node in a data structure and returns it, or undefined if
|
|
201
201
|
* it doesn't exist.
|
|
202
|
-
* @param {
|
|
202
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
203
203
|
* `keyNodeOrEntry` can accept a value of type `R`, which represents the key, node,
|
|
204
204
|
* entry, or raw element that needs to be ensured in the tree.
|
|
205
205
|
* @param {IterationType} [iterationType=ITERATIVE] - The `iterationType` parameter is an optional
|
|
@@ -216,8 +216,8 @@ export class BST extends BinaryTree {
|
|
|
216
216
|
* Space Complexity: O(1)
|
|
217
217
|
*
|
|
218
218
|
* The function checks if the input is an instance of the BSTNode class.
|
|
219
|
-
* @param {
|
|
220
|
-
* `keyNodeOrEntry` can be of type `R` or `
|
|
219
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
220
|
+
* `keyNodeOrEntry` can be of type `R` or `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
|
|
221
221
|
* @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
|
|
222
222
|
* an instance of the `BSTNode` class.
|
|
223
223
|
*/
|
|
@@ -243,8 +243,8 @@ export class BST extends BinaryTree {
|
|
|
243
243
|
* Space Complexity: O(log n)
|
|
244
244
|
*
|
|
245
245
|
* The `add` function in TypeScript adds a new node to a binary search tree based on the key value.
|
|
246
|
-
* @param {
|
|
247
|
-
* `keyNodeOrEntry` can accept a value of type `R` or `
|
|
246
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
247
|
+
* `keyNodeOrEntry` can accept a value of type `R` or `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
|
|
248
248
|
* @param {V} [value] - The `value` parameter is an optional value that can be associated with the
|
|
249
249
|
* key in the binary search tree. If provided, it will be stored in the node along with the key.
|
|
250
250
|
* @returns a boolean value.
|
|
@@ -413,7 +413,7 @@ export class BST extends BinaryTree {
|
|
|
413
413
|
*
|
|
414
414
|
* The function `search` in TypeScript overrides the search behavior in a binary tree structure based
|
|
415
415
|
* on specified criteria.
|
|
416
|
-
* @param {
|
|
416
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BSTNode<K, V>>} keyNodeEntryOrPredicate - The
|
|
417
417
|
* `keyNodeEntryOrPredicate` parameter in the `override search` method can accept one of the
|
|
418
418
|
* following types:
|
|
419
419
|
* @param [onlyOne=false] - The `onlyOne` parameter is a boolean flag that determines whether the
|
|
@@ -421,9 +421,9 @@ export class BST extends BinaryTree {
|
|
|
421
421
|
* search will return as soon as a matching node is found. If `onlyOne` is set to `false`, the
|
|
422
422
|
* @param {C} callback - The `callback` parameter in the `override search` function is a function
|
|
423
423
|
* that will be called on each node that matches the search criteria. It is of type `C`, which
|
|
424
|
-
* extends `NodeCallback<BSTNode<K, V
|
|
424
|
+
* extends `NodeCallback<BSTNode<K, V> | null>`. The callback function should accept a node of type `BSTNode<K, V>` as its
|
|
425
425
|
* argument and
|
|
426
|
-
* @param {
|
|
426
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } startNode - The `startNode` parameter in the `override search`
|
|
427
427
|
* method represents the node from which the search operation will begin. It is the starting point
|
|
428
428
|
* for searching within the tree data structure. The method ensures that the `startNode` is a valid
|
|
429
429
|
* node before proceeding with the search operation. If the `
|
|
@@ -447,104 +447,54 @@ export class BST extends BinaryTree {
|
|
|
447
447
|
const isRange = this.isRange(keyNodeEntryOrPredicate);
|
|
448
448
|
// Set predicate based on parameter type
|
|
449
449
|
if (isRange) {
|
|
450
|
-
predicate = node =>
|
|
450
|
+
predicate = node => {
|
|
451
|
+
if (!node)
|
|
452
|
+
return false;
|
|
453
|
+
return keyNodeEntryOrPredicate.isInRange(node.key, this._comparator);
|
|
454
|
+
};
|
|
451
455
|
}
|
|
452
456
|
else {
|
|
453
457
|
predicate = this._ensurePredicate(keyNodeEntryOrPredicate);
|
|
454
458
|
}
|
|
455
|
-
const
|
|
459
|
+
const shouldVisitLeft = (cur) => {
|
|
460
|
+
if (!cur)
|
|
461
|
+
return false;
|
|
462
|
+
if (!this.isRealNode(cur.left))
|
|
463
|
+
return false;
|
|
456
464
|
if (isRange) {
|
|
457
465
|
const range = keyNodeEntryOrPredicate;
|
|
458
466
|
const leftS = this.isReverse ? range.high : range.low;
|
|
459
467
|
const leftI = this.isReverse ? range.includeHigh : range.includeLow;
|
|
460
468
|
return (leftI && this._compare(cur.key, leftS) >= 0) || (!leftI && this._compare(cur.key, leftS) > 0);
|
|
461
469
|
}
|
|
462
|
-
|
|
470
|
+
if (!isRange && !this._isPredicate(keyNodeEntryOrPredicate)) {
|
|
471
|
+
const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
|
|
472
|
+
return benchmarkKey !== null && benchmarkKey !== undefined && this._compare(cur.key, benchmarkKey) > 0;
|
|
473
|
+
}
|
|
474
|
+
return true;
|
|
463
475
|
};
|
|
464
|
-
const
|
|
476
|
+
const shouldVisitRight = (cur) => {
|
|
477
|
+
if (!cur)
|
|
478
|
+
return false;
|
|
479
|
+
if (!this.isRealNode(cur.right))
|
|
480
|
+
return false;
|
|
465
481
|
if (isRange) {
|
|
466
482
|
const range = keyNodeEntryOrPredicate;
|
|
467
483
|
const rightS = this.isReverse ? range.low : range.high;
|
|
468
484
|
const rightI = this.isReverse ? range.includeLow : range.includeLow;
|
|
469
485
|
return (rightI && this._compare(cur.key, rightS) <= 0) || (!rightI && this._compare(cur.key, rightS) < 0);
|
|
470
486
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
if (iterationType === 'RECURSIVE') {
|
|
475
|
-
const dfs = (cur) => {
|
|
476
|
-
if (predicate(cur)) {
|
|
477
|
-
ans.push(callback(cur));
|
|
478
|
-
if (onlyOne)
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
|
-
if (!this.isRealNode(cur.left) && !this.isRealNode(cur.right))
|
|
482
|
-
return;
|
|
483
|
-
if (isRange) {
|
|
484
|
-
if (this.isRealNode(cur.left) && isToLeftByRange(cur))
|
|
485
|
-
dfs(cur.left);
|
|
486
|
-
if (this.isRealNode(cur.right) && isToRightByRange(cur))
|
|
487
|
-
dfs(cur.right);
|
|
488
|
-
}
|
|
489
|
-
else if (!this._isPredicate(keyNodeEntryOrPredicate)) {
|
|
490
|
-
const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
|
|
491
|
-
if (this.isRealNode(cur.left) &&
|
|
492
|
-
benchmarkKey !== null &&
|
|
493
|
-
benchmarkKey !== undefined &&
|
|
494
|
-
this._compare(cur.key, benchmarkKey) > 0)
|
|
495
|
-
dfs(cur.left);
|
|
496
|
-
if (this.isRealNode(cur.right) &&
|
|
497
|
-
benchmarkKey !== null &&
|
|
498
|
-
benchmarkKey !== undefined &&
|
|
499
|
-
this._compare(cur.key, benchmarkKey) < 0)
|
|
500
|
-
dfs(cur.right);
|
|
501
|
-
}
|
|
502
|
-
else {
|
|
503
|
-
if (this.isRealNode(cur.left))
|
|
504
|
-
dfs(cur.left);
|
|
505
|
-
if (this.isRealNode(cur.right))
|
|
506
|
-
dfs(cur.right);
|
|
507
|
-
}
|
|
508
|
-
};
|
|
509
|
-
dfs(startNode);
|
|
510
|
-
}
|
|
511
|
-
else {
|
|
512
|
-
const stack = [startNode];
|
|
513
|
-
while (stack.length > 0) {
|
|
514
|
-
const cur = stack.pop();
|
|
515
|
-
if (predicate(cur)) {
|
|
516
|
-
ans.push(callback(cur));
|
|
517
|
-
if (onlyOne)
|
|
518
|
-
return ans;
|
|
519
|
-
}
|
|
520
|
-
if (isRange) {
|
|
521
|
-
if (this.isRealNode(cur.left) && isToLeftByRange(cur))
|
|
522
|
-
stack.push(cur.left);
|
|
523
|
-
if (this.isRealNode(cur.right) && isToRightByRange(cur))
|
|
524
|
-
stack.push(cur.right);
|
|
525
|
-
}
|
|
526
|
-
else if (!this._isPredicate(keyNodeEntryOrPredicate)) {
|
|
527
|
-
const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
|
|
528
|
-
if (this.isRealNode(cur.right) &&
|
|
529
|
-
benchmarkKey !== null &&
|
|
530
|
-
benchmarkKey !== undefined &&
|
|
531
|
-
this._compare(cur.key, benchmarkKey) < 0)
|
|
532
|
-
stack.push(cur.right);
|
|
533
|
-
if (this.isRealNode(cur.left) &&
|
|
534
|
-
benchmarkKey !== null &&
|
|
535
|
-
benchmarkKey !== undefined &&
|
|
536
|
-
this._compare(cur.key, benchmarkKey) > 0)
|
|
537
|
-
stack.push(cur.left);
|
|
538
|
-
}
|
|
539
|
-
else {
|
|
540
|
-
if (this.isRealNode(cur.right))
|
|
541
|
-
stack.push(cur.right);
|
|
542
|
-
if (this.isRealNode(cur.left))
|
|
543
|
-
stack.push(cur.left);
|
|
544
|
-
}
|
|
487
|
+
if (!isRange && !this._isPredicate(keyNodeEntryOrPredicate)) {
|
|
488
|
+
const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
|
|
489
|
+
return benchmarkKey !== null && benchmarkKey !== undefined && this._compare(cur.key, benchmarkKey) < 0;
|
|
545
490
|
}
|
|
546
|
-
|
|
547
|
-
|
|
491
|
+
return true;
|
|
492
|
+
};
|
|
493
|
+
return super._dfs(callback, 'IN', onlyOne, startNode, iterationType, false, shouldVisitLeft, shouldVisitRight, () => true, cur => {
|
|
494
|
+
if (cur)
|
|
495
|
+
return predicate(cur);
|
|
496
|
+
return false;
|
|
497
|
+
});
|
|
548
498
|
}
|
|
549
499
|
/**
|
|
550
500
|
* Time Complexity: O(log n)
|
|
@@ -555,9 +505,9 @@ export class BST extends BinaryTree {
|
|
|
555
505
|
* either a `Range` object or an array of two elements representing the range boundaries.
|
|
556
506
|
* @param {C} callback - The `callback` parameter in the `rangeSearch` function is a callback
|
|
557
507
|
* function that is used to process each node that is found within the specified range during the
|
|
558
|
-
* search operation. It is of type `NodeCallback<BSTNode<K, V
|
|
508
|
+
* search operation. It is of type `NodeCallback<BSTNode<K, V> | null>`, where `BSTNode<K, V>` is the type of nodes in the
|
|
559
509
|
* data structure.
|
|
560
|
-
* @param {
|
|
510
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } startNode - The `startNode` parameter in the `rangeSearch`
|
|
561
511
|
* function represents the node from which the search for nodes within the specified range will
|
|
562
512
|
* begin. It is the starting point for the range search operation.
|
|
563
513
|
* @param {IterationType} iterationType - The `iterationType` parameter in the `rangeSearch` function
|
|
@@ -576,8 +526,8 @@ export class BST extends BinaryTree {
|
|
|
576
526
|
* Space Complexity: O(log n)
|
|
577
527
|
*
|
|
578
528
|
* This function retrieves a node based on a given keyNodeEntryOrPredicate within a binary search tree structure.
|
|
579
|
-
* @param {
|
|
580
|
-
* parameter can be of type `
|
|
529
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BSTNode<K, V>>} keyNodeEntryOrPredicate - The `keyNodeEntryOrPredicate`
|
|
530
|
+
* parameter can be of type `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `, `R`, or `NodePredicate<BSTNode<K, V>>`.
|
|
581
531
|
* @param {BSTNOptKeyOrNode<K, BSTNode<K, V>>} startNode - The `startNode` parameter in the `getNode` method
|
|
582
532
|
* is used to specify the starting point for searching nodes in the binary search tree. If no
|
|
583
533
|
* specific starting point is provided, the default value is set to `this._root`, which is the root
|
|
@@ -598,24 +548,30 @@ export class BST extends BinaryTree {
|
|
|
598
548
|
* Time complexity: O(n)
|
|
599
549
|
* Space complexity: O(n)
|
|
600
550
|
*
|
|
601
|
-
* The function overrides the
|
|
602
|
-
* the
|
|
551
|
+
* The function `dfs` in TypeScript overrides the base class method with default parameters and
|
|
552
|
+
* returns the result of the super class `dfs` method.
|
|
603
553
|
* @param {C} callback - The `callback` parameter is a function that will be called for each node
|
|
604
|
-
* during the
|
|
605
|
-
* `
|
|
606
|
-
* @param {DFSOrderPattern} [pattern=IN] - The
|
|
607
|
-
* order in which the Depth-First Search (DFS)
|
|
608
|
-
*
|
|
609
|
-
* @param {
|
|
610
|
-
*
|
|
611
|
-
*
|
|
612
|
-
*
|
|
613
|
-
*
|
|
614
|
-
* following
|
|
615
|
-
* @
|
|
554
|
+
* visited during the Depth-First Search traversal. It is a generic type `C` that extends the
|
|
555
|
+
* `NodeCallback` interface for `BSTNode<K, V>`. The default value for `callback` is `this._
|
|
556
|
+
* @param {DFSOrderPattern} [pattern=IN] - The `pattern` parameter in the `override dfs` method
|
|
557
|
+
* specifies the order in which the Depth-First Search (DFS) traversal should be performed on the
|
|
558
|
+
* Binary Search Tree (BST). The possible values for the `pattern` parameter are:
|
|
559
|
+
* @param {boolean} [onlyOne=false] - The `onlyOne` parameter in the `override dfs` method is a
|
|
560
|
+
* boolean flag that indicates whether you want to stop the depth-first search traversal after
|
|
561
|
+
* finding the first matching node or continue searching for all matching nodes. If `onlyOne` is set
|
|
562
|
+
* to `true`, the traversal will stop after finding
|
|
563
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} startNode -
|
|
564
|
+
* The `startNode` parameter in the `override dfs` method can be one of the following types:
|
|
565
|
+
* @param {IterationType} iterationType - The `iterationType` parameter in the `override dfs` method
|
|
566
|
+
* specifies the type of iteration to be performed during the Depth-First Search (DFS) traversal of a
|
|
567
|
+
* Binary Search Tree (BST). It is used to determine the order in which nodes are visited during the
|
|
568
|
+
* traversal. The possible values for `
|
|
569
|
+
* @returns The `override` function is returning the result of calling the `dfs` method from the
|
|
570
|
+
* superclass, with the provided arguments `callback`, `pattern`, `onlyOne`, `startNode`, and
|
|
571
|
+
* `iterationType`. The return type is an array of the return type of the callback function `C`.
|
|
616
572
|
*/
|
|
617
|
-
dfs(callback = this._DEFAULT_NODE_CALLBACK, pattern = 'IN', startNode = this._root, iterationType = this.iterationType) {
|
|
618
|
-
return super.dfs(callback, pattern, startNode, iterationType);
|
|
573
|
+
dfs(callback = this._DEFAULT_NODE_CALLBACK, pattern = 'IN', onlyOne = false, startNode = this._root, iterationType = this.iterationType) {
|
|
574
|
+
return super.dfs(callback, pattern, onlyOne, startNode, iterationType);
|
|
619
575
|
}
|
|
620
576
|
/**
|
|
621
577
|
* Time complexity: O(n)
|
|
@@ -626,7 +582,7 @@ export class BST extends BinaryTree {
|
|
|
626
582
|
* @param {C} callback - The `callback` parameter is a function that will be called for each node
|
|
627
583
|
* visited during the breadth-first search. It should take a single argument, which is the current
|
|
628
584
|
* node being visited, and it can return a value of any type.
|
|
629
|
-
* @param {
|
|
585
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } startNode - The `startNode` parameter is the starting
|
|
630
586
|
* point for the breadth-first search. It can be either a root node, a key-value pair, or an entry
|
|
631
587
|
* object. If no value is provided, the default value is the root of the tree.
|
|
632
588
|
* @param {IterationType} iterationType - The `iterationType` parameter is used to specify the type
|
|
@@ -644,9 +600,9 @@ export class BST extends BinaryTree {
|
|
|
644
600
|
* The function overrides the listLevels method from the superclass and returns an array of arrays
|
|
645
601
|
* containing the results of the callback function applied to each level of the tree.
|
|
646
602
|
* @param {C} callback - The `callback` parameter is a generic type `C` that extends
|
|
647
|
-
* `NodeCallback<BSTNode<K, V
|
|
603
|
+
* `NodeCallback<BSTNode<K, V> | null>`. It represents a callback function that will be called for each node in the
|
|
648
604
|
* tree during the iteration process.
|
|
649
|
-
* @param {
|
|
605
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } startNode - The `startNode` parameter is the starting
|
|
650
606
|
* point for listing the levels of the binary tree. It can be either a root node of the tree, a
|
|
651
607
|
* key-value pair representing a node in the tree, or a key representing a node in the tree. If no
|
|
652
608
|
* value is provided, the root of
|
|
@@ -670,7 +626,7 @@ export class BST extends BinaryTree {
|
|
|
670
626
|
* @param {CP} lesserOrGreater - The `lesserOrGreater` parameter is used to determine whether to
|
|
671
627
|
* traverse nodes that are lesser, greater, or both than the `targetNode`. It accepts the values -1,
|
|
672
628
|
* 0, or 1, where:
|
|
673
|
-
* @param {
|
|
629
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } targetNode - The `targetNode` parameter is the node in
|
|
674
630
|
* the binary tree that you want to start traversing from. It can be specified either by providing
|
|
675
631
|
* the key of the node, the node itself, or an entry containing the key and value of the node. If no
|
|
676
632
|
* `targetNode` is provided,
|
|
@@ -741,9 +697,9 @@ export class BST extends BinaryTree {
|
|
|
741
697
|
return;
|
|
742
698
|
const m = l + Math.floor((r - l) / 2);
|
|
743
699
|
const midNode = sorted[m];
|
|
744
|
-
if (this._isMapMode)
|
|
700
|
+
if (this._isMapMode && midNode !== null)
|
|
745
701
|
this.add(midNode.key);
|
|
746
|
-
else
|
|
702
|
+
else if (midNode !== null)
|
|
747
703
|
this.add([midNode.key, midNode.value]);
|
|
748
704
|
buildBalanceBST(l, m - 1);
|
|
749
705
|
buildBalanceBST(m + 1, r);
|
|
@@ -760,9 +716,9 @@ export class BST extends BinaryTree {
|
|
|
760
716
|
if (l <= r) {
|
|
761
717
|
const m = l + Math.floor((r - l) / 2);
|
|
762
718
|
const midNode = sorted[m];
|
|
763
|
-
if (this._isMapMode)
|
|
719
|
+
if (this._isMapMode && midNode !== null)
|
|
764
720
|
this.add(midNode.key);
|
|
765
|
-
else
|
|
721
|
+
else if (midNode !== null)
|
|
766
722
|
this.add([midNode.key, midNode.value]);
|
|
767
723
|
stack.push([m + 1, r]);
|
|
768
724
|
stack.push([l, m - 1]);
|
|
@@ -875,8 +831,8 @@ export class BST extends BinaryTree {
|
|
|
875
831
|
* Space Complexity: O(1)
|
|
876
832
|
*
|
|
877
833
|
* The function overrides a method and converts a key, value pair or entry or raw element to a node.
|
|
878
|
-
* @param {
|
|
879
|
-
* type R or
|
|
834
|
+
* @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - A variable that can be of
|
|
835
|
+
* type R or K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined . It represents either a key, a node, an entry, or a raw
|
|
880
836
|
* element.
|
|
881
837
|
* @param {V} [value] - The `value` parameter is an optional value of type `V`. It represents the
|
|
882
838
|
* value associated with a key in a key-value pair.
|
|
@@ -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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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { BinaryTreeDeleteResult,
|
|
1
|
+
import type { BinaryTreeDeleteResult, CRUD, EntryCallback, RBTNColor, RedBlackTreeOptions } 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> extends BSTNode<K, V> {
|
|
5
|
+
parent?: RedBlackTreeNode<K, V>;
|
|
5
6
|
/**
|
|
6
7
|
* The constructor initializes a node with a key, value, and color for a Red-Black Tree.
|
|
7
8
|
* @param {K} key - The `key` parameter is a key of type `K` that is used to identify the node in a
|
|
@@ -13,13 +14,12 @@ export declare class RedBlackTreeNode<K = any, V = any> extends BSTNode<K, V> {
|
|
|
13
14
|
* explicitly.
|
|
14
15
|
*/
|
|
15
16
|
constructor(key: K, value?: V, color?: RBTNColor);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
set right(v: OptNodeOrNull<RedBlackTreeNode<K, V>>);
|
|
17
|
+
_left?: RedBlackTreeNode<K, V> | null | undefined;
|
|
18
|
+
get left(): RedBlackTreeNode<K, V> | null | undefined;
|
|
19
|
+
set left(v: RedBlackTreeNode<K, V> | null | undefined);
|
|
20
|
+
_right?: RedBlackTreeNode<K, V> | null | undefined;
|
|
21
|
+
get right(): RedBlackTreeNode<K, V> | null | undefined;
|
|
22
|
+
set right(v: RedBlackTreeNode<K, V> | null | undefined);
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* 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.
|
|
@@ -79,14 +79,14 @@ export declare class RedBlackTree<K = any, V = any, R = object, MK = any, MV = a
|
|
|
79
79
|
* This TypeScript constructor initializes a Red-Black Tree with optional keys, nodes, entries, or
|
|
80
80
|
* raw data.
|
|
81
81
|
* @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
|
|
82
|
-
* iterable that can contain either `
|
|
82
|
+
* iterable that can contain either `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined` objects or `R` objects. It
|
|
83
83
|
* is used to initialize the Red-Black Tree with keys, nodes, entries, or
|
|
84
84
|
* @param [options] - The `options` parameter in the constructor is of type `RedBlackTreeOptions<K,
|
|
85
85
|
* V, R>`. It is an optional parameter that allows you to specify additional options for the
|
|
86
86
|
* RedBlackTree class. These options could include configuration settings, behavior customization, or
|
|
87
87
|
* any other parameters that are specific to
|
|
88
88
|
*/
|
|
89
|
-
constructor(keysNodesEntriesOrRaws?: Iterable<
|
|
89
|
+
constructor(keysNodesEntriesOrRaws?: Iterable<K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | R>, options?: RedBlackTreeOptions<K, V, R>);
|
|
90
90
|
protected _root: RedBlackTreeNode<K, V> | undefined;
|
|
91
91
|
get root(): RedBlackTreeNode<K, V> | undefined;
|
|
92
92
|
/**
|
|
@@ -122,12 +122,12 @@ export declare class RedBlackTree<K = any, V = any, R = object, MK = any, MV = a
|
|
|
122
122
|
* Space Complexity: O(1)
|
|
123
123
|
*
|
|
124
124
|
* The function checks if the input is an instance of the RedBlackTreeNode class.
|
|
125
|
-
* @param {
|
|
126
|
-
* `keyNodeOrEntry` can be of type `R` or `
|
|
125
|
+
* @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The parameter
|
|
126
|
+
* `keyNodeOrEntry` can be of type `R` or `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined`.
|
|
127
127
|
* @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
|
|
128
128
|
* an instance of the `RedBlackTreeNode` class.
|
|
129
129
|
*/
|
|
130
|
-
isNode(keyNodeOrEntry:
|
|
130
|
+
isNode(keyNodeOrEntry: K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): keyNodeOrEntry is RedBlackTreeNode<K, V>;
|
|
131
131
|
/**
|
|
132
132
|
* Time Complexity: O(1)
|
|
133
133
|
* Space Complexity: O(1)
|
|
@@ -142,8 +142,8 @@ export declare class RedBlackTree<K = any, V = any, R = object, MK = any, MV = a
|
|
|
142
142
|
*
|
|
143
143
|
* The function adds a new node to a binary search tree and returns true if the node was successfully
|
|
144
144
|
* added.
|
|
145
|
-
* @param {
|
|
146
|
-
* `keyNodeOrEntry` can accept a value of type `R` or `
|
|
145
|
+
* @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The parameter
|
|
146
|
+
* `keyNodeOrEntry` can accept a value of type `R` or `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined`.
|
|
147
147
|
* @param {V} [value] - The `value` parameter is an optional value that you want to associate with
|
|
148
148
|
* the key in the data structure. It represents the value that you want to add or update in the data
|
|
149
149
|
* structure.
|
|
@@ -151,14 +151,14 @@ export declare class RedBlackTree<K = any, V = any, R = object, MK = any, MV = a
|
|
|
151
151
|
* the method returns true. If the node already exists and its value is updated, the method also
|
|
152
152
|
* returns true. If the node cannot be added or updated, the method returns false.
|
|
153
153
|
*/
|
|
154
|
-
add(keyNodeOrEntry:
|
|
154
|
+
add(keyNodeOrEntry: K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, value?: V): boolean;
|
|
155
155
|
/**
|
|
156
156
|
* Time Complexity: O(log n)
|
|
157
157
|
* Space Complexity: O(log n)
|
|
158
158
|
*
|
|
159
159
|
* The function overrides the delete method in a binary tree data structure to remove a node based on
|
|
160
160
|
* a given predicate and maintain the binary search tree properties.
|
|
161
|
-
* @param {
|
|
161
|
+
* @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The `keyNodeOrEntry`
|
|
162
162
|
* parameter in the `override delete` method is used to specify the condition or key based on which a
|
|
163
163
|
* node should be deleted from the binary tree. It can be a key, a node, an entry, or a predicate
|
|
164
164
|
* function that determines which node(s) should be deleted.
|
|
@@ -166,7 +166,7 @@ export declare class RedBlackTree<K = any, V = any, R = object, MK = any, MV = a
|
|
|
166
166
|
* objects. Each object in the array contains information about the deleted node and whether
|
|
167
167
|
* balancing is needed.
|
|
168
168
|
*/
|
|
169
|
-
delete(keyNodeOrEntry:
|
|
169
|
+
delete(keyNodeOrEntry: K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): BinaryTreeDeleteResult<RedBlackTreeNode<K, V>>[];
|
|
170
170
|
/**
|
|
171
171
|
* Time Complexity: O(n)
|
|
172
172
|
* Space Complexity: O(n)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BST, BSTNode } from './bst';
|
|
2
2
|
export class RedBlackTreeNode extends BSTNode {
|
|
3
|
+
parent = undefined;
|
|
3
4
|
/**
|
|
4
5
|
* The constructor initializes a node with a key, value, and color for a Red-Black Tree.
|
|
5
6
|
* @param {K} key - The `key` parameter is a key of type `K` that is used to identify the node in a
|
|
@@ -14,7 +15,6 @@ export class RedBlackTreeNode extends BSTNode {
|
|
|
14
15
|
super(key, value);
|
|
15
16
|
this._color = color;
|
|
16
17
|
}
|
|
17
|
-
parent = undefined;
|
|
18
18
|
_left = undefined;
|
|
19
19
|
get left() {
|
|
20
20
|
return this._left;
|
|
@@ -94,7 +94,7 @@ export class RedBlackTree extends BST {
|
|
|
94
94
|
* This TypeScript constructor initializes a Red-Black Tree with optional keys, nodes, entries, or
|
|
95
95
|
* raw data.
|
|
96
96
|
* @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
|
|
97
|
-
* iterable that can contain either `
|
|
97
|
+
* iterable that can contain either `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined` objects or `R` objects. It
|
|
98
98
|
* is used to initialize the Red-Black Tree with keys, nodes, entries, or
|
|
99
99
|
* @param [options] - The `options` parameter in the constructor is of type `RedBlackTreeOptions<K,
|
|
100
100
|
* V, R>`. It is an optional parameter that allows you to specify additional options for the
|
|
@@ -155,8 +155,8 @@ export class RedBlackTree extends BST {
|
|
|
155
155
|
* Space Complexity: O(1)
|
|
156
156
|
*
|
|
157
157
|
* The function checks if the input is an instance of the RedBlackTreeNode class.
|
|
158
|
-
* @param {
|
|
159
|
-
* `keyNodeOrEntry` can be of type `R` or `
|
|
158
|
+
* @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The parameter
|
|
159
|
+
* `keyNodeOrEntry` can be of type `R` or `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined`.
|
|
160
160
|
* @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
|
|
161
161
|
* an instance of the `RedBlackTreeNode` class.
|
|
162
162
|
*/
|
|
@@ -180,8 +180,8 @@ export class RedBlackTree extends BST {
|
|
|
180
180
|
*
|
|
181
181
|
* The function adds a new node to a binary search tree and returns true if the node was successfully
|
|
182
182
|
* added.
|
|
183
|
-
* @param {
|
|
184
|
-
* `keyNodeOrEntry` can accept a value of type `R` or `
|
|
183
|
+
* @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The parameter
|
|
184
|
+
* `keyNodeOrEntry` can accept a value of type `R` or `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined`.
|
|
185
185
|
* @param {V} [value] - The `value` parameter is an optional value that you want to associate with
|
|
186
186
|
* the key in the data structure. It represents the value that you want to add or update in the data
|
|
187
187
|
* structure.
|
|
@@ -220,7 +220,7 @@ export class RedBlackTree extends BST {
|
|
|
220
220
|
*
|
|
221
221
|
* The function overrides the delete method in a binary tree data structure to remove a node based on
|
|
222
222
|
* a given predicate and maintain the binary search tree properties.
|
|
223
|
-
* @param {
|
|
223
|
+
* @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The `keyNodeOrEntry`
|
|
224
224
|
* parameter in the `override delete` method is used to specify the condition or key based on which a
|
|
225
225
|
* node should be deleted from the binary tree. It can be a key, a node, an entry, or a predicate
|
|
226
226
|
* function that determines which node(s) should be deleted.
|