data-structure-typed 1.53.8 → 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 (115) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/CONTRIBUTING.md +1 -1
  3. package/dist/cjs/data-structures/base/iterable-entry-base.js +4 -4
  4. package/dist/cjs/data-structures/base/iterable-entry-base.js.map +1 -1
  5. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +36 -17
  6. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +64 -35
  7. package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +12 -8
  9. package/dist/cjs/data-structures/binary-tree/avl-tree.js +19 -6
  10. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +53 -40
  12. package/dist/cjs/data-structures/binary-tree/binary-tree.js +75 -71
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  14. package/dist/cjs/data-structures/binary-tree/bst.d.ts +35 -30
  15. package/dist/cjs/data-structures/binary-tree/bst.js +54 -40
  16. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  17. package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +43 -22
  18. package/dist/cjs/data-structures/binary-tree/red-black-tree.js +50 -55
  19. package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  20. package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +33 -17
  21. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +62 -36
  22. package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  23. package/dist/cjs/data-structures/graph/abstract-graph.js +2 -2
  24. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  25. package/dist/cjs/data-structures/hash/hash-map.d.ts +1 -1
  26. package/dist/cjs/data-structures/hash/hash-map.js +5 -5
  27. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  28. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +10 -10
  29. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +12 -12
  30. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  31. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +10 -10
  32. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +16 -16
  33. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  34. package/dist/cjs/interfaces/binary-tree.d.ts +3 -4
  35. package/dist/cjs/types/data-structures/base/base.d.ts +1 -1
  36. package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -3
  37. package/dist/cjs/types/data-structures/binary-tree/avl-tree.d.ts +2 -3
  38. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -3
  39. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +3 -4
  40. package/dist/cjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -5
  41. package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +4 -5
  42. package/dist/mjs/data-structures/base/iterable-entry-base.js +4 -4
  43. package/dist/mjs/data-structures/base/iterable-entry-base.js.map +1 -1
  44. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +36 -17
  45. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +64 -35
  46. package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
  47. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +12 -8
  48. package/dist/mjs/data-structures/binary-tree/avl-tree.js +19 -6
  49. package/dist/mjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  50. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +53 -40
  51. package/dist/mjs/data-structures/binary-tree/binary-tree.js +75 -71
  52. package/dist/mjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  53. package/dist/mjs/data-structures/binary-tree/bst.d.ts +35 -30
  54. package/dist/mjs/data-structures/binary-tree/bst.js +70 -56
  55. package/dist/mjs/data-structures/binary-tree/bst.js.map +1 -1
  56. package/dist/mjs/data-structures/binary-tree/red-black-tree.d.ts +43 -22
  57. package/dist/mjs/data-structures/binary-tree/red-black-tree.js +50 -55
  58. package/dist/mjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
  59. package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +33 -17
  60. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +62 -36
  61. package/dist/mjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
  62. package/dist/mjs/data-structures/graph/abstract-graph.js +2 -2
  63. package/dist/mjs/data-structures/graph/abstract-graph.js.map +1 -1
  64. package/dist/mjs/data-structures/hash/hash-map.d.ts +1 -1
  65. package/dist/mjs/data-structures/hash/hash-map.js +5 -5
  66. package/dist/mjs/data-structures/hash/hash-map.js.map +1 -1
  67. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +10 -10
  68. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +12 -12
  69. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  70. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +10 -10
  71. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +16 -16
  72. package/dist/mjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  73. package/dist/mjs/interfaces/binary-tree.d.ts +3 -4
  74. package/dist/mjs/types/data-structures/base/base.d.ts +1 -1
  75. package/dist/mjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -3
  76. package/dist/mjs/types/data-structures/binary-tree/avl-tree.d.ts +2 -3
  77. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -3
  78. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +3 -4
  79. package/dist/mjs/types/data-structures/binary-tree/rb-tree.d.ts +4 -5
  80. package/dist/mjs/types/data-structures/binary-tree/tree-multi-map.d.ts +4 -5
  81. package/dist/umd/data-structure-typed.js +337 -253
  82. package/dist/umd/data-structure-typed.min.js +3 -3
  83. package/dist/umd/data-structure-typed.min.js.map +1 -1
  84. package/package.json +6 -6
  85. package/src/data-structures/base/iterable-entry-base.ts +4 -4
  86. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +81 -54
  87. package/src/data-structures/binary-tree/avl-tree.ts +32 -15
  88. package/src/data-structures/binary-tree/binary-tree.ts +88 -83
  89. package/src/data-structures/binary-tree/bst.ts +87 -74
  90. package/src/data-structures/binary-tree/red-black-tree.ts +55 -54
  91. package/src/data-structures/binary-tree/tree-multi-map.ts +79 -49
  92. package/src/data-structures/graph/abstract-graph.ts +2 -2
  93. package/src/data-structures/hash/hash-map.ts +7 -7
  94. package/src/data-structures/linked-list/doubly-linked-list.ts +13 -13
  95. package/src/data-structures/linked-list/singly-linked-list.ts +17 -17
  96. package/src/interfaces/binary-tree.ts +3 -13
  97. package/src/types/data-structures/base/base.ts +1 -1
  98. package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +2 -4
  99. package/src/types/data-structures/binary-tree/avl-tree.ts +2 -4
  100. package/src/types/data-structures/binary-tree/binary-tree.ts +3 -3
  101. package/src/types/data-structures/binary-tree/bst.ts +3 -5
  102. package/src/types/data-structures/binary-tree/rb-tree.ts +4 -6
  103. package/src/types/data-structures/binary-tree/tree-multi-map.ts +4 -6
  104. package/test/integration/index.html +3 -3
  105. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.ts +3 -3
  106. package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +12 -12
  107. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +10 -10
  108. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +10 -10
  109. package/test/unit/data-structures/binary-tree/bst.test.ts +11 -11
  110. package/test/unit/data-structures/binary-tree/data/cost-of-living-by-country.ts +259 -0
  111. package/test/unit/data-structures/binary-tree/overall.test.ts +2 -0
  112. package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +30 -10
  113. package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +10 -10
  114. package/test/unit/data-structures/graph/directed-graph.test.ts +4 -4
  115. package/test/unit/data-structures/hash/hash-map.test.ts +12 -12
@@ -116,6 +116,23 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
116
116
  return this._size;
117
117
  }
118
118
 
119
+ /**
120
+ * Time Complexity: O(n)
121
+ * Space Complexity: O(n)
122
+ *
123
+ * The `fromArray` function creates a new SinglyLinkedList instance and populates it with the elements from the given
124
+ * array.
125
+ * @param {E[]} data - The `data` parameter is an array of elements of type `E`.
126
+ * @returns The `fromArray` function returns a `SinglyLinkedList` object.
127
+ */
128
+ static fromArray<E>(data: E[]) {
129
+ const singlyLinkedList = new SinglyLinkedList<E>();
130
+ for (const item of data) {
131
+ singlyLinkedList.push(item);
132
+ }
133
+ return singlyLinkedList;
134
+ }
135
+
119
136
  /**
120
137
  * Time Complexity: O(1)
121
138
  * Space Complexity: O(1)
@@ -763,23 +780,6 @@ export class SinglyLinkedList<E = any, R = any> extends IterableElementBase<E, R
763
780
  }
764
781
  }
765
782
 
766
- /**
767
- * Time Complexity: O(n)
768
- * Space Complexity: O(n)
769
- *
770
- * The `fromArray` function creates a new SinglyLinkedList instance and populates it with the elements from the given
771
- * array.
772
- * @param {E[]} data - The `data` parameter is an array of elements of type `E`.
773
- * @returns The `fromArray` function returns a `SinglyLinkedList` object.
774
- */
775
- static fromArray<E>(data: E[]) {
776
- const singlyLinkedList = new SinglyLinkedList<E>();
777
- for (const item of data) {
778
- singlyLinkedList.push(item);
779
- }
780
- return singlyLinkedList;
781
- }
782
-
783
783
  /**
784
784
  * The _isPredicate function in TypeScript checks if the input is a function that takes a
785
785
  * SinglyLinkedListNode as an argument and returns a boolean.
@@ -1,24 +1,14 @@
1
- import { BinaryTree, BinaryTreeNode } from '../data-structures';
2
- import type {
3
- BinaryTreeDeleteResult,
4
- BinaryTreeNested,
5
- BinaryTreeNodeNested,
6
- BinaryTreeOptions,
7
- BTNRep,
8
- NodePredicate
9
- } from '../types';
1
+ import { BinaryTreeNode } from '../data-structures';
2
+ import type { BinaryTreeDeleteResult, BinaryTreeNodeNested, BTNRep, NodePredicate } from '../types';
10
3
 
11
4
  export interface IBinaryTree<
12
5
  K = any,
13
6
  V = any,
14
7
  R = object,
15
- NODE extends BinaryTreeNode<K, V, NODE> = BinaryTreeNodeNested<K, V>,
16
- TREE extends BinaryTree<K, V, R, NODE, TREE> = BinaryTreeNested<K, V, R, NODE>
8
+ NODE extends BinaryTreeNode<K, V, NODE> = BinaryTreeNodeNested<K, V>
17
9
  > {
18
10
  createNode(key: K, value?: NODE['value']): NODE;
19
11
 
20
- createTree(options?: Partial<BinaryTreeOptions<K, V, R>>): TREE;
21
-
22
12
  add(keyOrNodeOrEntryOrRawElement: BTNRep<K, V, NODE>, value?: V, count?: number): boolean;
23
13
 
24
14
  addMany(nodes: Iterable<BTNRep<K, V, NODE>>, values?: Iterable<V | undefined>): boolean[];
@@ -1,6 +1,6 @@
1
1
  import { IterableElementBase, IterableEntryBase } from '../../../data-structures';
2
2
 
3
- export type EntryCallback<K, V, R> = (value: V, key: K, index: number, container: IterableEntryBase<K, V>) => R;
3
+ export type EntryCallback<K, V, R> = (key: K, value: V, index: number, container: IterableEntryBase<K, V>) => R;
4
4
  export type ElementCallback<E, R, RT, C> = (element: E, index: number, container: IterableElementBase<E, R, C>) => RT;
5
5
  export type ReduceEntryCallback<K, V, R> = (
6
6
  accumulator: R,
@@ -1,8 +1,6 @@
1
- import { AVLTreeMultiMap, AVLTreeMultiMapNode } from '../../../data-structures';
1
+ import { AVLTreeMultiMapNode } from '../../../data-structures';
2
2
  import type { AVLTreeOptions } from './avl-tree';
3
3
 
4
- export type AVLTreeMultiMapNodeNested<K, V> = AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
-
6
- export type AVLTreeMultiMapNested<K, V, R, NODE extends AVLTreeMultiMapNode<K, V, NODE>> = AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, AVLTreeMultiMap<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4
+ export type AVLTreeMultiMapNodeNested<K, V> = AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, AVLTreeMultiMapNode<K, V, any>>>>>>>>>>
7
5
 
8
6
  export type AVLTreeMultiMapOptions<K, V, R> = AVLTreeOptions<K, V, R> & {}
@@ -1,8 +1,6 @@
1
- import { AVLTree, AVLTreeNode } from '../../../data-structures';
1
+ import { AVLTreeNode } from '../../../data-structures';
2
2
  import { BSTOptions } from './bst';
3
3
 
4
- export type AVLTreeNodeNested<K, V> = AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
-
6
- export type AVLTreeNested<K, V, R, NODE extends AVLTreeNode<K, V, NODE>> = AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, AVLTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4
+ export type AVLTreeNodeNested<K, V> = AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, AVLTreeNode<K, V, any>>>>>>>>>>
7
5
 
8
6
  export type AVLTreeOptions<K, V, R> = BSTOptions<K, V, R> & {};
@@ -1,10 +1,10 @@
1
- import { BinaryTree, BinaryTreeNode } from '../../../data-structures';
1
+ import { BinaryTreeNode } from '../../../data-structures';
2
2
  import { IterationType, OptValue } from '../../common';
3
3
  import { DFSOperation } from '../../../common';
4
4
 
5
- export type BinaryTreeNodeNested<K, V> = BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
+ export type BinaryTreeNodeNested<K, V> = BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, any>>>>>>>>>>
6
6
 
7
- export type BinaryTreeNested<K, V, R, NODE extends BinaryTreeNode<K, V, NODE>> = BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7
+ // export type BinaryTreeNested<K, V, R, NODE extends BinaryTreeNode<K, V, NODE>> = BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8
8
 
9
9
  export type ToEntryFn<K, V, R> = (rawElement: R) => BTNEntry<K, V>;
10
10
 
@@ -1,13 +1,11 @@
1
- import { BST, BSTNode } from '../../../data-structures';
1
+ import { BSTNode } from '../../../data-structures';
2
2
  import type { BinaryTreeOptions } from './binary-tree';
3
3
  import { Comparable } from '../../utils';
4
4
 
5
- export type BSTNodeNested<K, V> = BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6
-
7
- export type BSTNested<K, V, R, NODE extends BSTNode<K, V, NODE>> = BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, BST<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
+ export type BSTNodeNested<K, V> = BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, BSTNode<K, V, any>>>>>>>>>>
8
6
 
9
7
  export type BSTOptions<K, V, R> = BinaryTreeOptions<K, V, R> & {
10
- extractComparable?: (key: K) => Comparable
8
+ specifyComparable?: (key: K) => Comparable
11
9
  isReverse?: boolean;
12
10
  }
13
11
 
@@ -1,10 +1,8 @@
1
- import { RedBlackTree, RedBlackTreeNode } from '../../../data-structures';
2
- import type { BSTOptions } from "./bst";
1
+ import { RedBlackTreeNode } from '../../../data-structures';
2
+ import type { BSTOptions } from './bst';
3
3
 
4
4
  export type RBTNColor = 'RED' | 'BLACK';
5
5
 
6
- export type RedBlackTreeNodeNested<K, V> = RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6
+ export type RedBlackTreeNodeNested<K, V> = RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, RedBlackTreeNode<K, V, any>>>>>>>>>>
7
7
 
8
- export type RedBlackTreeNested<K, V, R, NODE extends RedBlackTreeNode<K, V, NODE>> = RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, RedBlackTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9
-
10
- export type RBTreeOptions<K, V, R> = Omit<BSTOptions<K, V, R>, 'isReverse'> & {};
8
+ export type RedBlackTreeOptions<K, V, R> = Omit<BSTOptions<K, V, R>, 'isReverse'> & {};
@@ -1,8 +1,6 @@
1
- import { TreeMultiMap, TreeMultiMapNode } from '../../../data-structures';
2
- import type { RBTreeOptions } from './rb-tree';
1
+ import { TreeMultiMapNode } from '../../../data-structures';
2
+ import type { RedBlackTreeOptions } from './rb-tree';
3
3
 
4
- export type TreeMultiMapNodeNested<K, V> = TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4
+ export type TreeMultiMapNodeNested<K, V> = TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, TreeMultiMapNode<K, V, any>>>>>>>>>>
5
5
 
6
- export type TreeMultiMapNested<K, V, R, NODE extends TreeMultiMapNode<K, V, NODE>> = TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, TreeMultiMap<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7
-
8
- export type TreeMultiMapOptions<K, V, R> = RBTreeOptions<K, V, R> & {}
6
+ export type TreeMultiMapOptions<K, V, R> = RedBlackTreeOptions<K, V, R> & {}
@@ -102,7 +102,7 @@
102
102
  try {
103
103
  const { OrderedMap } = sdsl;
104
104
  const { RedBlackTree } = dataStructureTyped;
105
- const cRBTree = new OrderedMap();
105
+ const cRedBlackTree = new OrderedMap();
106
106
  const rbTree = new RedBlackTree();
107
107
  const tS = performance.now();
108
108
  const n = 100000;
@@ -117,10 +117,10 @@
117
117
  rbTree.print(rbTree.root, { isShowRedBlackNIL: true });
118
118
  const cS = performance.now();
119
119
  for (let i = 1; i < 100000; i++) {
120
- cRBTree.setElement(i, i);
120
+ cRedBlackTree.setElement(i, i);
121
121
  }
122
122
  console.log((performance.now() - cS).toFixed(2), `CRedBlackTree ${n.toLocaleString()} add`);
123
- console.log(cRBTree.size(), `cRBTree.size()`);
123
+ console.log(cRedBlackTree.size(), `cRedBlackTree.size()`);
124
124
  } catch (e) {
125
125
  console.error(e);
126
126
  }
@@ -9,14 +9,14 @@ const { TEN_THOUSAND } = magnitude;
9
9
  const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND - 1, true);
10
10
 
11
11
  suite
12
- .add(`${TEN_THOUSAND.toLocaleString()} RBTree add randomly`, () => {
12
+ .add(`${TEN_THOUSAND.toLocaleString()} RedBlackTree add randomly`, () => {
13
13
  rbTree.clear();
14
14
  for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
15
15
  })
16
- .add(`${TEN_THOUSAND.toLocaleString()} RBTree get randomly`, () => {
16
+ .add(`${TEN_THOUSAND.toLocaleString()} RedBlackTree get randomly`, () => {
17
17
  for (let i = 0; i < arr.length; i++) rbTree.get(arr[i]);
18
18
  })
19
- .add(`${TEN_THOUSAND.toLocaleString()} RBTree add & delete randomly`, () => {
19
+ .add(`${TEN_THOUSAND.toLocaleString()} RedBlackTree add & delete randomly`, () => {
20
20
  rbTree.clear();
21
21
  for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
22
22
  for (let i = 0; i < arr.length; i++) rbTree.delete(arr[i]);
@@ -626,18 +626,18 @@ describe('AVLTreeMultiMap iterative methods test', () => {
626
626
 
627
627
  it('forEach should iterate over all elements', () => {
628
628
  const mockCallback = jest.fn();
629
- treeMM.forEach((value, key) => {
630
- mockCallback(value, key);
629
+ treeMM.forEach((key, value) => {
630
+ mockCallback(key, value);
631
631
  });
632
632
 
633
633
  expect(mockCallback.mock.calls.length).toBe(3);
634
- expect(mockCallback.mock.calls[0]).toEqual(['a', 1]);
635
- expect(mockCallback.mock.calls[1]).toEqual(['b', 2]);
636
- expect(mockCallback.mock.calls[2]).toEqual(['c', 3]);
634
+ expect(mockCallback.mock.calls[0]).toEqual([1, 'a']);
635
+ expect(mockCallback.mock.calls[1]).toEqual([2, 'b']);
636
+ expect(mockCallback.mock.calls[2]).toEqual([3, 'c']);
637
637
  });
638
638
 
639
639
  it('filter should return a new tree with filtered elements', () => {
640
- const filteredTree = treeMM.filter((value, key) => key > 1);
640
+ const filteredTree = treeMM.filter(key => key > 1);
641
641
  expect(filteredTree.size).toBe(2);
642
642
  expect([...filteredTree]).toEqual([
643
643
  [2, 'b'],
@@ -646,12 +646,12 @@ describe('AVLTreeMultiMap iterative methods test', () => {
646
646
  });
647
647
 
648
648
  it('map should return a new tree with modified elements', () => {
649
- const mappedTree = treeMM.map((value, key) => (key * 2).toString());
649
+ const mappedTree = treeMM.map((key, value) => [(key * 2).toString(), value]);
650
650
  expect(mappedTree.size).toBe(3);
651
651
  expect([...mappedTree]).toEqual([
652
- [1, '2'],
653
- [2, '4'],
654
- [3, '6']
652
+ ['2', 'a'],
653
+ ['4', 'b'],
654
+ ['6', 'c']
655
655
  ]);
656
656
  });
657
657
 
@@ -736,7 +736,7 @@ describe('AVLTree toEntryFn', () => {
736
736
  { obj: { id: 5 } }
737
737
  ])
738
738
  ).toThrowError(
739
- `When comparing object types, a custom extractComparable must be defined in the constructor's options parameter.`
739
+ `When comparing object types, a custom specifyComparable must be defined in the constructor's options parameter.`
740
740
  );
741
741
  });
742
742
 
@@ -744,7 +744,7 @@ describe('AVLTree toEntryFn', () => {
744
744
  const tree = new AVLTreeMultiMap<{ obj: { id: number } }, number>(
745
745
  [{ obj: { id: 1 } }, { obj: { id: 2 } }, { obj: { id: 3 } }, { obj: { id: 4 } }, { obj: { id: 5 } }],
746
746
  {
747
- extractComparable: key => key.obj.id
747
+ specifyComparable: key => key.obj.id
748
748
  }
749
749
  );
750
750
 
@@ -386,18 +386,18 @@ describe('AVLTree iterative methods test', () => {
386
386
 
387
387
  it('forEach should iterate over all elements', () => {
388
388
  const mockCallback = jest.fn();
389
- avl.forEach((value, key) => {
390
- mockCallback(value, key);
389
+ avl.forEach((key, value) => {
390
+ mockCallback(key, value);
391
391
  });
392
392
 
393
393
  expect(mockCallback.mock.calls.length).toBe(3);
394
- expect(mockCallback.mock.calls[0]).toEqual(['a', 1]);
395
- expect(mockCallback.mock.calls[1]).toEqual(['b', 2]);
396
- expect(mockCallback.mock.calls[2]).toEqual(['c', 3]);
394
+ expect(mockCallback.mock.calls[0]).toEqual([1, 'a']);
395
+ expect(mockCallback.mock.calls[1]).toEqual([2, 'b']);
396
+ expect(mockCallback.mock.calls[2]).toEqual([3, 'c']);
397
397
  });
398
398
 
399
399
  it('filter should return a new tree with filtered elements', () => {
400
- const filteredTree = avl.filter((value, key) => key > 1);
400
+ const filteredTree = avl.filter(key => key > 1);
401
401
  expect(filteredTree.size).toBe(2);
402
402
  expect([...filteredTree]).toEqual([
403
403
  [2, 'b'],
@@ -406,12 +406,12 @@ describe('AVLTree iterative methods test', () => {
406
406
  });
407
407
 
408
408
  it('map should return a new tree with modified elements', () => {
409
- const mappedTree = avl.map((value, key) => (key * 2).toString());
409
+ const mappedTree = avl.map((key, value) => [(key * 2).toString(), value]);
410
410
  expect(mappedTree.size).toBe(3);
411
411
  expect([...mappedTree]).toEqual([
412
- [1, '2'],
413
- [2, '4'],
414
- [3, '6']
412
+ ['2', 'a'],
413
+ ['4', 'b'],
414
+ ['6', 'c']
415
415
  ]);
416
416
  });
417
417
 
@@ -1342,18 +1342,18 @@ describe('BinaryTree iterative methods test', () => {
1342
1342
 
1343
1343
  it('forEach should iterate over all elements', () => {
1344
1344
  const mockCallback = jest.fn();
1345
- binaryTree.forEach((value, key) => {
1346
- mockCallback(value, key);
1345
+ binaryTree.forEach((key, value) => {
1346
+ mockCallback(key, value);
1347
1347
  });
1348
1348
 
1349
1349
  expect(mockCallback.mock.calls.length).toBe(3);
1350
- expect(mockCallback.mock.calls[0]).toEqual(['b', 2]);
1351
- expect(mockCallback.mock.calls[1]).toEqual(['a', 1]);
1352
- expect(mockCallback.mock.calls[2]).toEqual(['c', 3]);
1350
+ expect(mockCallback.mock.calls[0]).toEqual([2, 'b']);
1351
+ expect(mockCallback.mock.calls[1]).toEqual([1, 'a']);
1352
+ expect(mockCallback.mock.calls[2]).toEqual([3, 'c']);
1353
1353
  });
1354
1354
 
1355
1355
  it('filter should return a new tree with filtered elements', () => {
1356
- const filteredTree = binaryTree.filter((value, key) => key > 1);
1356
+ const filteredTree = binaryTree.filter((key, value) => key > 1);
1357
1357
  expect(filteredTree.size).toBe(2);
1358
1358
  expect([...filteredTree]).toEqual([
1359
1359
  [3, 'c'],
@@ -1362,12 +1362,12 @@ describe('BinaryTree iterative methods test', () => {
1362
1362
  });
1363
1363
 
1364
1364
  it('map should return a new tree with modified elements', () => {
1365
- const mappedTree = binaryTree.map((value, key) => (key * 2).toString());
1365
+ const mappedTree = binaryTree.map((key, value) => [(key * 2).toString(), value]);
1366
1366
  expect(mappedTree.size).toBe(3);
1367
1367
  expect([...mappedTree]).toEqual([
1368
- [1, '2'],
1369
- [2, '4'],
1370
- [3, '6']
1368
+ ['2', 'a'],
1369
+ ['4', 'b'],
1370
+ ['6', 'c']
1371
1371
  ]);
1372
1372
  });
1373
1373
 
@@ -981,7 +981,7 @@ describe('BST operations test recursively', () => {
981
981
 
982
982
  if (isTestStackOverflow) {
983
983
  it('should getLeftMost', () => {
984
- const bst = new BST<number>([], { extractComparable: key => key });
984
+ const bst = new BST<number>([], { specifyComparable: key => key });
985
985
  for (let i = 1; i <= SYSTEM_MAX_CALL_STACK; i++) bst.add(i);
986
986
 
987
987
  expect(() => {
@@ -1110,18 +1110,18 @@ describe('BST iterative methods test', () => {
1110
1110
 
1111
1111
  it('forEach should iterate over all elements', () => {
1112
1112
  const mockCallback = jest.fn();
1113
- bst.forEach((value, key) => {
1114
- mockCallback(value, key);
1113
+ bst.forEach((key, value) => {
1114
+ mockCallback(key, value);
1115
1115
  });
1116
1116
 
1117
1117
  expect(mockCallback.mock.calls.length).toBe(3);
1118
- expect(mockCallback.mock.calls[0]).toEqual(['a', 1]);
1119
- expect(mockCallback.mock.calls[1]).toEqual(['b', 2]);
1120
- expect(mockCallback.mock.calls[2]).toEqual(['c', 3]);
1118
+ expect(mockCallback.mock.calls[0]).toEqual([1, 'a']);
1119
+ expect(mockCallback.mock.calls[1]).toEqual([2, 'b']);
1120
+ expect(mockCallback.mock.calls[2]).toEqual([3, 'c']);
1121
1121
  });
1122
1122
 
1123
1123
  it('filter should return a new tree with filtered elements', () => {
1124
- const filteredTree = bst.filter((value, key) => key > 1);
1124
+ const filteredTree = bst.filter((key, value) => key > 1);
1125
1125
  expect(filteredTree.size).toBe(2);
1126
1126
  expect([...filteredTree]).toEqual([
1127
1127
  [2, 'b'],
@@ -1130,12 +1130,12 @@ describe('BST iterative methods test', () => {
1130
1130
  });
1131
1131
 
1132
1132
  it('map should return a new tree with modified elements', () => {
1133
- const mappedTree = bst.map((value, key) => (key * 2).toString());
1133
+ const mappedTree = bst.map((key, value) => [(key * 2).toString(), value]);
1134
1134
  expect(mappedTree.size).toBe(3);
1135
1135
  expect([...mappedTree]).toEqual([
1136
- [1, '2'],
1137
- [2, '4'],
1138
- [3, '6']
1136
+ ['2', 'a'],
1137
+ ['4', 'b'],
1138
+ ['6', 'c']
1139
1139
  ]);
1140
1140
  });
1141
1141