data-structure-typed 1.54.2 → 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.
Files changed (91) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/LICENSE +2 -2
  3. package/README.md +14 -1
  4. package/README_zh-CN.md +1 -1
  5. package/benchmark/report.html +4 -1
  6. package/benchmark/report.json +76 -17
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
  8. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +8 -7
  9. package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  10. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +12 -12
  11. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +2 -2
  12. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  13. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +25 -21
  14. package/dist/cjs/data-structures/binary-tree/avl-tree.js +12 -8
  15. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  16. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +111 -225
  17. package/dist/cjs/data-structures/binary-tree/binary-tree.js +177 -144
  18. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  19. package/dist/cjs/data-structures/binary-tree/bst.d.ts +59 -53
  20. package/dist/cjs/data-structures/binary-tree/bst.js +75 -119
  21. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  22. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +18 -18
  23. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +6 -6
  24. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  25. package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +19 -19
  26. package/dist/cjs/data-structures/binary-tree/tree-counter.js +12 -12
  27. package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
  28. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +12 -12
  29. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +2 -2
  30. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  31. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  32. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
  33. package/dist/cjs/utils/utils.d.ts +2 -2
  34. package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
  35. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +9 -8
  36. package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
  37. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +12 -12
  38. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +3 -3
  39. package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  40. package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +25 -21
  41. package/dist/esm/data-structures/binary-tree/avl-tree.js +13 -9
  42. package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
  43. package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +111 -225
  44. package/dist/esm/data-structures/binary-tree/binary-tree.js +181 -148
  45. package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
  46. package/dist/esm/data-structures/binary-tree/bst.d.ts +59 -53
  47. package/dist/esm/data-structures/binary-tree/bst.js +76 -120
  48. package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
  49. package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +18 -18
  50. package/dist/esm/data-structures/binary-tree/red-black-tree.js +7 -7
  51. package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
  52. package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +19 -19
  53. package/dist/esm/data-structures/binary-tree/tree-counter.js +13 -13
  54. package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
  55. package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +12 -12
  56. package/dist/esm/data-structures/binary-tree/tree-multi-map.js +3 -3
  57. package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  58. package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
  59. package/dist/esm/types/data-structures/binary-tree/bst.d.ts +1 -1
  60. package/dist/esm/utils/utils.d.ts +2 -2
  61. package/dist/umd/data-structure-typed.js +296 -279
  62. package/dist/umd/data-structure-typed.min.js +5 -12
  63. package/dist/umd/data-structure-typed.min.js.map +1 -1
  64. package/package.json +7 -7
  65. package/src/data-structures/binary-tree/avl-tree-counter.ts +30 -23
  66. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +25 -15
  67. package/src/data-structures/binary-tree/avl-tree.ts +35 -29
  68. package/src/data-structures/binary-tree/binary-tree.ts +469 -252
  69. package/src/data-structures/binary-tree/bst.ts +141 -143
  70. package/src/data-structures/binary-tree/red-black-tree.ts +27 -35
  71. package/src/data-structures/binary-tree/tree-counter.ts +33 -27
  72. package/src/data-structures/binary-tree/tree-multi-map.ts +25 -17
  73. package/src/types/data-structures/binary-tree/binary-tree.ts +1 -0
  74. package/src/types/data-structures/binary-tree/bst.ts +1 -1
  75. package/src/utils/utils.ts +2 -2
  76. package/test/integration/compile.mjs +21 -21
  77. package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +71 -0
  78. package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +81 -0
  79. package/test/performance/{reportor.js → reportor.mjs} +264 -8
  80. package/test/performance/reportor.ts +1 -1
  81. package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +7 -7
  82. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +4 -5
  83. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +72 -5
  84. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +132 -82
  85. package/test/unit/data-structures/binary-tree/bst.test.ts +12 -12
  86. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +4 -12
  87. package/test/unit/data-structures/binary-tree/tree-counter.test.ts +4 -4
  88. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +5 -5
  89. package/test/utils/json2html.ts +0 -154
  90. package/test/performance/data-structures/binary-tree/avl-tree.test.js +0 -45
  91. /package/test/performance/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +0 -0
@@ -111,7 +111,7 @@ class BST extends binary_tree_1.BinaryTree {
111
111
  * This TypeScript constructor initializes a binary search tree with optional options and adds
112
112
  * elements if provided.
113
113
  * @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
114
- * iterable that can contain elements of type `BTNRep<K, V, BSTNode<K, V>>` or `R`. It is used to
114
+ * iterable that can contain elements of type `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined ` or `R`. It is used to
115
115
  * initialize the binary search tree with keys, nodes, entries, or raw data.
116
116
  * @param [options] - The `options` parameter is an optional object that can contain the following
117
117
  * properties:
@@ -195,7 +195,7 @@ class BST extends binary_tree_1.BinaryTree {
195
195
  *
196
196
  * The function ensures the existence of a node in a data structure and returns it, or undefined if
197
197
  * it doesn't exist.
198
- * @param {BTNRep<K, V, BSTNode<K, V>>} keyNodeOrEntry - The parameter
198
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
199
199
  * `keyNodeOrEntry` can accept a value of type `R`, which represents the key, node,
200
200
  * entry, or raw element that needs to be ensured in the tree.
201
201
  * @param {IterationType} [iterationType=ITERATIVE] - The `iterationType` parameter is an optional
@@ -213,8 +213,8 @@ class BST extends binary_tree_1.BinaryTree {
213
213
  * Space Complexity: O(1)
214
214
  *
215
215
  * The function checks if the input is an instance of the BSTNode class.
216
- * @param {BTNRep<K, V, BSTNode<K, V>>} keyNodeOrEntry - The parameter
217
- * `keyNodeOrEntry` can be of type `R` or `BTNRep<K, V, BSTNode<K, V>>`.
216
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
217
+ * `keyNodeOrEntry` can be of type `R` or `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
218
218
  * @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
219
219
  * an instance of the `BSTNode` class.
220
220
  */
@@ -240,8 +240,8 @@ class BST extends binary_tree_1.BinaryTree {
240
240
  * Space Complexity: O(log n)
241
241
  *
242
242
  * The `add` function in TypeScript adds a new node to a binary search tree based on the key value.
243
- * @param {BTNRep<K, V, BSTNode<K, V>>} keyNodeOrEntry - The parameter
244
- * `keyNodeOrEntry` can accept a value of type `R` or `BTNRep<K, V, BSTNode<K, V>>`.
243
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
244
+ * `keyNodeOrEntry` can accept a value of type `R` or `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
245
245
  * @param {V} [value] - The `value` parameter is an optional value that can be associated with the
246
246
  * key in the binary search tree. If provided, it will be stored in the node along with the key.
247
247
  * @returns a boolean value.
@@ -412,7 +412,7 @@ class BST extends binary_tree_1.BinaryTree {
412
412
  *
413
413
  * The function `search` in TypeScript overrides the search behavior in a binary tree structure based
414
414
  * on specified criteria.
415
- * @param {BTNRep<K, V, BSTNode<K, V>> | NodePredicate<BSTNode<K, V>>} keyNodeEntryOrPredicate - The
415
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BSTNode<K, V>>} keyNodeEntryOrPredicate - The
416
416
  * `keyNodeEntryOrPredicate` parameter in the `override search` method can accept one of the
417
417
  * following types:
418
418
  * @param [onlyOne=false] - The `onlyOne` parameter is a boolean flag that determines whether the
@@ -420,9 +420,9 @@ class BST extends binary_tree_1.BinaryTree {
420
420
  * search will return as soon as a matching node is found. If `onlyOne` is set to `false`, the
421
421
  * @param {C} callback - The `callback` parameter in the `override search` function is a function
422
422
  * that will be called on each node that matches the search criteria. It is of type `C`, which
423
- * extends `NodeCallback<BSTNode<K, V>>`. The callback function should accept a node of type `BSTNode<K, V>` as its
423
+ * extends `NodeCallback<BSTNode<K, V> | null>`. The callback function should accept a node of type `BSTNode<K, V>` as its
424
424
  * argument and
425
- * @param {BTNRep<K, V, BSTNode<K, V>>} startNode - The `startNode` parameter in the `override search`
425
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } startNode - The `startNode` parameter in the `override search`
426
426
  * method represents the node from which the search operation will begin. It is the starting point
427
427
  * for searching within the tree data structure. The method ensures that the `startNode` is a valid
428
428
  * node before proceeding with the search operation. If the `
@@ -446,104 +446,54 @@ class BST extends binary_tree_1.BinaryTree {
446
446
  const isRange = this.isRange(keyNodeEntryOrPredicate);
447
447
  // Set predicate based on parameter type
448
448
  if (isRange) {
449
- predicate = node => keyNodeEntryOrPredicate.isInRange(node.key, this._comparator);
449
+ predicate = node => {
450
+ if (!node)
451
+ return false;
452
+ return keyNodeEntryOrPredicate.isInRange(node.key, this._comparator);
453
+ };
450
454
  }
451
455
  else {
452
456
  predicate = this._ensurePredicate(keyNodeEntryOrPredicate);
453
457
  }
454
- const isToLeftByRange = (cur) => {
458
+ const shouldVisitLeft = (cur) => {
459
+ if (!cur)
460
+ return false;
461
+ if (!this.isRealNode(cur.left))
462
+ return false;
455
463
  if (isRange) {
456
464
  const range = keyNodeEntryOrPredicate;
457
465
  const leftS = this.isReverse ? range.high : range.low;
458
466
  const leftI = this.isReverse ? range.includeHigh : range.includeLow;
459
467
  return (leftI && this._compare(cur.key, leftS) >= 0) || (!leftI && this._compare(cur.key, leftS) > 0);
460
468
  }
461
- return false;
469
+ if (!isRange && !this._isPredicate(keyNodeEntryOrPredicate)) {
470
+ const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
471
+ return benchmarkKey !== null && benchmarkKey !== undefined && this._compare(cur.key, benchmarkKey) > 0;
472
+ }
473
+ return true;
462
474
  };
463
- const isToRightByRange = (cur) => {
475
+ const shouldVisitRight = (cur) => {
476
+ if (!cur)
477
+ return false;
478
+ if (!this.isRealNode(cur.right))
479
+ return false;
464
480
  if (isRange) {
465
481
  const range = keyNodeEntryOrPredicate;
466
482
  const rightS = this.isReverse ? range.low : range.high;
467
483
  const rightI = this.isReverse ? range.includeLow : range.includeLow;
468
484
  return (rightI && this._compare(cur.key, rightS) <= 0) || (!rightI && this._compare(cur.key, rightS) < 0);
469
485
  }
470
- return false;
471
- };
472
- const ans = [];
473
- if (iterationType === 'RECURSIVE') {
474
- const dfs = (cur) => {
475
- if (predicate(cur)) {
476
- ans.push(callback(cur));
477
- if (onlyOne)
478
- return;
479
- }
480
- if (!this.isRealNode(cur.left) && !this.isRealNode(cur.right))
481
- return;
482
- if (isRange) {
483
- if (this.isRealNode(cur.left) && isToLeftByRange(cur))
484
- dfs(cur.left);
485
- if (this.isRealNode(cur.right) && isToRightByRange(cur))
486
- dfs(cur.right);
487
- }
488
- else if (!this._isPredicate(keyNodeEntryOrPredicate)) {
489
- const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
490
- if (this.isRealNode(cur.left) &&
491
- benchmarkKey !== null &&
492
- benchmarkKey !== undefined &&
493
- this._compare(cur.key, benchmarkKey) > 0)
494
- dfs(cur.left);
495
- if (this.isRealNode(cur.right) &&
496
- benchmarkKey !== null &&
497
- benchmarkKey !== undefined &&
498
- this._compare(cur.key, benchmarkKey) < 0)
499
- dfs(cur.right);
500
- }
501
- else {
502
- if (this.isRealNode(cur.left))
503
- dfs(cur.left);
504
- if (this.isRealNode(cur.right))
505
- dfs(cur.right);
506
- }
507
- };
508
- dfs(startNode);
509
- }
510
- else {
511
- const stack = [startNode];
512
- while (stack.length > 0) {
513
- const cur = stack.pop();
514
- if (predicate(cur)) {
515
- ans.push(callback(cur));
516
- if (onlyOne)
517
- return ans;
518
- }
519
- if (isRange) {
520
- if (this.isRealNode(cur.left) && isToLeftByRange(cur))
521
- stack.push(cur.left);
522
- if (this.isRealNode(cur.right) && isToRightByRange(cur))
523
- stack.push(cur.right);
524
- }
525
- else if (!this._isPredicate(keyNodeEntryOrPredicate)) {
526
- const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
527
- if (this.isRealNode(cur.right) &&
528
- benchmarkKey !== null &&
529
- benchmarkKey !== undefined &&
530
- this._compare(cur.key, benchmarkKey) < 0)
531
- stack.push(cur.right);
532
- if (this.isRealNode(cur.left) &&
533
- benchmarkKey !== null &&
534
- benchmarkKey !== undefined &&
535
- this._compare(cur.key, benchmarkKey) > 0)
536
- stack.push(cur.left);
537
- }
538
- else {
539
- if (this.isRealNode(cur.right))
540
- stack.push(cur.right);
541
- if (this.isRealNode(cur.left))
542
- stack.push(cur.left);
543
- }
486
+ if (!isRange && !this._isPredicate(keyNodeEntryOrPredicate)) {
487
+ const benchmarkKey = this._extractKey(keyNodeEntryOrPredicate);
488
+ return benchmarkKey !== null && benchmarkKey !== undefined && this._compare(cur.key, benchmarkKey) < 0;
544
489
  }
545
- }
546
- return ans;
490
+ return true;
491
+ };
492
+ return super._dfs(callback, 'IN', onlyOne, startNode, iterationType, false, shouldVisitLeft, shouldVisitRight, () => true, cur => {
493
+ if (cur)
494
+ return predicate(cur);
495
+ return false;
496
+ });
547
497
  }
548
498
  /**
549
499
  * Time Complexity: O(log n)
@@ -554,9 +504,9 @@ class BST extends binary_tree_1.BinaryTree {
554
504
  * either a `Range` object or an array of two elements representing the range boundaries.
555
505
  * @param {C} callback - The `callback` parameter in the `rangeSearch` function is a callback
556
506
  * function that is used to process each node that is found within the specified range during the
557
- * search operation. It is of type `NodeCallback<BSTNode<K, V>>`, where `BSTNode<K, V>` is the type of nodes in the
507
+ * search operation. It is of type `NodeCallback<BSTNode<K, V> | null>`, where `BSTNode<K, V>` is the type of nodes in the
558
508
  * data structure.
559
- * @param {BTNRep<K, V, BSTNode<K, V>>} startNode - The `startNode` parameter in the `rangeSearch`
509
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } startNode - The `startNode` parameter in the `rangeSearch`
560
510
  * function represents the node from which the search for nodes within the specified range will
561
511
  * begin. It is the starting point for the range search operation.
562
512
  * @param {IterationType} iterationType - The `iterationType` parameter in the `rangeSearch` function
@@ -575,8 +525,8 @@ class BST extends binary_tree_1.BinaryTree {
575
525
  * Space Complexity: O(log n)
576
526
  *
577
527
  * This function retrieves a node based on a given keyNodeEntryOrPredicate within a binary search tree structure.
578
- * @param {BTNRep<K, V, BSTNode<K, V>> | NodePredicate<BSTNode<K, V>>} keyNodeEntryOrPredicate - The `keyNodeEntryOrPredicate`
579
- * parameter can be of type `BTNRep<K, V, BSTNode<K, V>>`, `R`, or `NodePredicate<BSTNode<K, V>>`.
528
+ * @param {K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BSTNode<K, V>>} keyNodeEntryOrPredicate - The `keyNodeEntryOrPredicate`
529
+ * parameter can be of type `K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `, `R`, or `NodePredicate<BSTNode<K, V>>`.
580
530
  * @param {BSTNOptKeyOrNode<K, BSTNode<K, V>>} startNode - The `startNode` parameter in the `getNode` method
581
531
  * is used to specify the starting point for searching nodes in the binary search tree. If no
582
532
  * specific starting point is provided, the default value is set to `this._root`, which is the root
@@ -598,24 +548,30 @@ class BST extends binary_tree_1.BinaryTree {
598
548
  * Time complexity: O(n)
599
549
  * Space complexity: O(n)
600
550
  *
601
- * The function overrides the depth-first search method and returns an array of the return types of
602
- * the callback function.
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 depth-first search traversal. It is an optional parameter and defaults to
605
- * `this._DEFAULT_NODE_CALLBACK`. The type `C` represents the type of the callback function.
606
- * @param {DFSOrderPattern} [pattern=IN] - The "pattern" parameter in the code snippet refers to the
607
- * order in which the Depth-First Search (DFS) algorithm visits the nodes in a tree or graph. It can
608
- * take one of the following values:
609
- * @param {BTNRep<K, V, BSTNode<K, V>>} startNode - The `startNode` parameter is the starting
610
- * point for the depth-first search traversal. It can be either a root node, a key-value pair, or a
611
- * node entry. If not specified, the default value is the root of the tree.
612
- * @param {IterationType} [iterationType=ITERATIVE] - The `iterationType` parameter specifies the
613
- * type of iteration to be used during the Depth-First Search (DFS) traversal. It can have one of the
614
- * following values:
615
- * @returns The method is returning an array of the return type of the callback function.
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 @@ class BST extends binary_tree_1.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 {BTNRep<K, V, BSTNode<K, V>>} startNode - The `startNode` parameter is the starting
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 @@ class BST extends binary_tree_1.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>>`. It represents a callback function that will be called for each node in the
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 {BTNRep<K, V, BSTNode<K, V>>} startNode - The `startNode` parameter is the starting
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 @@ class BST extends binary_tree_1.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 {BTNRep<K, V, BSTNode<K, V>>} targetNode - The `targetNode` parameter is the node in
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 @@ class BST extends binary_tree_1.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 @@ class BST extends binary_tree_1.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 @@ class BST extends binary_tree_1.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 {BTNRep<K, V, BSTNode<K, V>>} keyNodeOrEntry - A variable that can be of
879
- * type R or BTNRep<K, V, BSTNode<K, V>>. It represents either a key, a node, an entry, or a raw
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, BTNRep, CRUD, EntryCallback, OptNodeOrNull, RBTNColor, RedBlackTreeOptions } from '../../types';
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
- parent?: RedBlackTreeNode<K, V>;
17
- _left?: OptNodeOrNull<RedBlackTreeNode<K, V>>;
18
- get left(): OptNodeOrNull<RedBlackTreeNode<K, V>>;
19
- set left(v: OptNodeOrNull<RedBlackTreeNode<K, V>>);
20
- _right?: OptNodeOrNull<RedBlackTreeNode<K, V>>;
21
- get right(): OptNodeOrNull<RedBlackTreeNode<K, V>>;
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 `BTNRep<K, V, RedBlackTreeNode<K, V>>` objects or `R` objects. It
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<BTNRep<K, V, RedBlackTreeNode<K, V>> | R>, options?: RedBlackTreeOptions<K, V, R>);
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 {BTNRep<K, V, RedBlackTreeNode<K, V>>} keyNodeOrEntry - The parameter
126
- * `keyNodeOrEntry` can be of type `R` or `BTNRep<K, V, RedBlackTreeNode<K, V>>`.
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: BTNRep<K, V, RedBlackTreeNode<K, V>>): keyNodeOrEntry is RedBlackTreeNode<K, V>;
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 {BTNRep<K, V, RedBlackTreeNode<K, V>>} keyNodeOrEntry - The parameter
146
- * `keyNodeOrEntry` can accept a value of type `R` or `BTNRep<K, V, RedBlackTreeNode<K, V>>`.
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: BTNRep<K, V, RedBlackTreeNode<K, V>>, value?: V): boolean;
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 {BTNRep<K, V, RedBlackTreeNode<K, V>>} keyNodeOrEntry - The `keyNodeOrEntry`
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: BTNRep<K, V, RedBlackTreeNode<K, V>>): BinaryTreeDeleteResult<RedBlackTreeNode<K, V>>[];
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)
@@ -98,7 +98,7 @@ class RedBlackTree extends bst_1.BST {
98
98
  * This TypeScript constructor initializes a Red-Black Tree with optional keys, nodes, entries, or
99
99
  * raw data.
100
100
  * @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
101
- * iterable that can contain either `BTNRep<K, V, RedBlackTreeNode<K, V>>` objects or `R` objects. It
101
+ * iterable that can contain either `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined` objects or `R` objects. It
102
102
  * is used to initialize the Red-Black Tree with keys, nodes, entries, or
103
103
  * @param [options] - The `options` parameter in the constructor is of type `RedBlackTreeOptions<K,
104
104
  * V, R>`. It is an optional parameter that allows you to specify additional options for the
@@ -152,8 +152,8 @@ class RedBlackTree extends bst_1.BST {
152
152
  * Space Complexity: O(1)
153
153
  *
154
154
  * The function checks if the input is an instance of the RedBlackTreeNode class.
155
- * @param {BTNRep<K, V, RedBlackTreeNode<K, V>>} keyNodeOrEntry - The parameter
156
- * `keyNodeOrEntry` can be of type `R` or `BTNRep<K, V, RedBlackTreeNode<K, V>>`.
155
+ * @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The parameter
156
+ * `keyNodeOrEntry` can be of type `R` or `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined`.
157
157
  * @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
158
158
  * an instance of the `RedBlackTreeNode` class.
159
159
  */
@@ -177,8 +177,8 @@ class RedBlackTree extends bst_1.BST {
177
177
  *
178
178
  * The function adds a new node to a binary search tree and returns true if the node was successfully
179
179
  * added.
180
- * @param {BTNRep<K, V, RedBlackTreeNode<K, V>>} keyNodeOrEntry - The parameter
181
- * `keyNodeOrEntry` can accept a value of type `R` or `BTNRep<K, V, RedBlackTreeNode<K, V>>`.
180
+ * @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The parameter
181
+ * `keyNodeOrEntry` can accept a value of type `R` or `K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined`.
182
182
  * @param {V} [value] - The `value` parameter is an optional value that you want to associate with
183
183
  * the key in the data structure. It represents the value that you want to add or update in the data
184
184
  * structure.
@@ -217,7 +217,7 @@ class RedBlackTree extends bst_1.BST {
217
217
  *
218
218
  * The function overrides the delete method in a binary tree data structure to remove a node based on
219
219
  * a given predicate and maintain the binary search tree properties.
220
- * @param {BTNRep<K, V, RedBlackTreeNode<K, V>>} keyNodeOrEntry - The `keyNodeOrEntry`
220
+ * @param {K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined} keyNodeOrEntry - The `keyNodeOrEntry`
221
221
  * parameter in the `override delete` method is used to specify the condition or key based on which a
222
222
  * node should be deleted from the binary tree. It can be a key, a node, an entry, or a predicate
223
223
  * function that determines which node(s) should be deleted.