data-structure-typed 1.42.4 → 1.42.5

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 (36) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +17 -17
  3. package/benchmark/report.html +12 -12
  4. package/benchmark/report.json +106 -106
  5. package/dist/cjs/src/data-structures/binary-tree/index.d.ts +1 -1
  6. package/dist/cjs/src/data-structures/binary-tree/index.js +1 -1
  7. package/dist/cjs/src/data-structures/binary-tree/{tree-multiset.d.ts → tree-multimap.d.ts} +10 -10
  8. package/dist/cjs/src/data-structures/binary-tree/{tree-multiset.js → tree-multimap.js} +15 -15
  9. package/dist/cjs/src/data-structures/binary-tree/{tree-multiset.js.map → tree-multimap.js.map} +1 -1
  10. package/dist/cjs/src/types/data-structures/binary-tree/index.d.ts +1 -1
  11. package/dist/cjs/src/types/data-structures/binary-tree/index.js +1 -1
  12. package/dist/cjs/src/types/data-structures/binary-tree/tree-multimap.d.ts +4 -0
  13. package/dist/cjs/src/types/data-structures/binary-tree/{tree-multiset.js → tree-multimap.js} +1 -1
  14. package/dist/cjs/src/types/data-structures/binary-tree/tree-multimap.js.map +1 -0
  15. package/dist/mjs/src/data-structures/binary-tree/index.d.ts +1 -1
  16. package/dist/mjs/src/data-structures/binary-tree/index.js +1 -1
  17. package/dist/mjs/src/data-structures/binary-tree/{tree-multiset.d.ts → tree-multimap.d.ts} +10 -10
  18. package/dist/mjs/src/data-structures/binary-tree/{tree-multiset.js → tree-multimap.js} +14 -14
  19. package/dist/mjs/src/types/data-structures/binary-tree/index.d.ts +1 -1
  20. package/dist/mjs/src/types/data-structures/binary-tree/index.js +1 -1
  21. package/dist/mjs/src/types/data-structures/binary-tree/tree-multimap.d.ts +4 -0
  22. package/dist/umd/data-structure-typed.min.js +1 -1
  23. package/dist/umd/data-structure-typed.min.js.map +1 -1
  24. package/package.json +5 -3
  25. package/src/data-structures/binary-tree/index.ts +1 -1
  26. package/src/data-structures/binary-tree/{tree-multiset.ts → tree-multimap.ts} +14 -14
  27. package/src/types/data-structures/binary-tree/index.ts +1 -1
  28. package/src/types/data-structures/binary-tree/tree-multimap.ts +6 -0
  29. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +2 -2
  30. package/test/unit/data-structures/binary-tree/{tree-multiset.test.ts → tree-multimap.test.ts} +182 -182
  31. package/dist/cjs/src/types/data-structures/binary-tree/tree-multiset.d.ts +0 -4
  32. package/dist/cjs/src/types/data-structures/binary-tree/tree-multiset.js.map +0 -1
  33. package/dist/mjs/src/types/data-structures/binary-tree/tree-multiset.d.ts +0 -4
  34. package/src/types/data-structures/binary-tree/tree-multiset.ts +0 -6
  35. /package/dist/mjs/src/types/data-structures/binary-tree/{tree-multiset.js → tree-multimap.js} +0 -0
  36. /package/test/performance/data-structures/binary-tree/{tree-multiset.test.ts → tree-multimap.test.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "data-structure-typed",
3
- "version": "1.42.4",
3
+ "version": "1.42.5",
4
4
  "description": "Data Structures of Javascript & TypeScript. Binary Tree, BST, Graph, Heap, Priority Queue, Linked List, Queue, Deque, Stack, AVL Tree, Tree Multiset, Trie, Directed Graph, Undirected Graph, Singly Linked List, Doubly Linked List, Max Heap, Max Priority Queue, Min Heap, Min Priority Queue.",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/mjs/src/index.js",
@@ -30,7 +30,7 @@
30
30
  "reformat:test": "npm run lint:test && npm run format:test",
31
31
  "reformat": "npm run reformat:src && npm run reformat:test",
32
32
  "update:subs": "npm i avl-tree-typed binary-tree-typed bst-typed heap-typed --save-dev",
33
- "install:all-subs": "npm i avl-tree-typed binary-tree-typed bst-typed deque-typed directed-graph-typed doubly-linked-list-typed graph-typed heap-typed linked-list-typed max-heap-typed max-priority-queue-typed min-heap-typed min-priority-queue-typed priority-queue-typed singly-linked-list-typed stack-typed tree-multiset-typed trie-typed undirected-graph-typed queue-typed --save-dev",
33
+ "install:all-subs": "npm i avl-tree-typed binary-tree-typed bst-typed deque-typed directed-graph-typed doubly-linked-list-typed graph-typed heap-typed linked-list-typed max-heap-typed max-priority-queue-typed min-heap-typed min-priority-queue-typed priority-queue-typed singly-linked-list-typed stack-typed tree-multimap-typed trie-typed undirected-graph-typed queue-typed --save-dev",
34
34
  "test": "jest --runInBand",
35
35
  "test:integration": "npm run update:subs && jest --config jest.integration.config.js",
36
36
  "benchmark": "ts-node test/performance/reportor.ts",
@@ -161,7 +161,9 @@
161
161
  "avl-tree",
162
162
  "tree multiset",
163
163
  "treemultiset",
164
- "tree-multiset",
164
+ "tree multimap",
165
+ "treemultimap",
166
+ "tree-multimap",
165
167
  "binary indexed tree",
166
168
  "binaryindexedtree",
167
169
  "binary-indexed-tree",
@@ -4,4 +4,4 @@ export * from './binary-indexed-tree';
4
4
  export * from './segment-tree';
5
5
  export * from './avl-tree';
6
6
  export * from './rb-tree';
7
- export * from './tree-multiset';
7
+ export * from './tree-multimap';
@@ -5,14 +5,14 @@
5
5
  * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
6
6
  * @license MIT License
7
7
  */
8
- import type {BTNKey, TreeMultisetNodeNested, TreeMultisetOptions} from '../../types';
8
+ import type {BTNKey, TreeMultimapNodeNested, TreeMultimapOptions} from '../../types';
9
9
  import {BinaryTreeDeletedResult, BTNCallback, CP, FamilyPosition, IterationType} from '../../types';
10
10
  import {IBinaryTree} from '../../interfaces';
11
11
  import {AVLTree, AVLTreeNode} from './avl-tree';
12
12
 
13
- export class TreeMultisetNode<
13
+ export class TreeMultimapNode<
14
14
  V = any,
15
- N extends TreeMultisetNode<V, N> = TreeMultisetNodeNested<V>
15
+ N extends TreeMultimapNode<V, N> = TreeMultimapNodeNested<V>
16
16
  > extends AVLTreeNode<V, N> {
17
17
  count: number;
18
18
 
@@ -33,19 +33,19 @@ export class TreeMultisetNode<
33
33
  }
34
34
 
35
35
  /**
36
- * The only distinction between a TreeMultiset and a AVLTree lies in the ability of the former to store duplicate nodes through the utilization of counters.
36
+ * The only distinction between a TreeMultimap and a AVLTree lies in the ability of the former to store duplicate nodes through the utilization of counters.
37
37
  */
38
- export class TreeMultiset<V = any, N extends TreeMultisetNode<V, N> = TreeMultisetNode<V, TreeMultisetNodeNested<V>>>
38
+ export class TreeMultimap<V = any, N extends TreeMultimapNode<V, N> = TreeMultimapNode<V, TreeMultimapNodeNested<V>>>
39
39
  extends AVLTree<V, N>
40
40
  implements IBinaryTree<V, N>
41
41
  {
42
42
  /**
43
- * The constructor function for a TreeMultiset class in TypeScript, which extends another class and sets an option to
43
+ * The constructor function for a TreeMultimap class in TypeScript, which extends another class and sets an option to
44
44
  * merge duplicated values.
45
- * @param {TreeMultisetOptions} [options] - An optional object that contains additional configuration options for the
46
- * TreeMultiset.
45
+ * @param {TreeMultimapOptions} [options] - An optional object that contains additional configuration options for the
46
+ * TreeMultimap.
47
47
  */
48
- constructor(options?: TreeMultisetOptions) {
48
+ constructor(options?: TreeMultimapOptions) {
49
49
  super(options);
50
50
  }
51
51
 
@@ -65,7 +65,7 @@ export class TreeMultiset<V = any, N extends TreeMultisetNode<V, N> = TreeMultis
65
65
  * @returns A new instance of the BSTNode class with the specified key, value, and count (if provided).
66
66
  */
67
67
  override createNode(key: BTNKey, value?: V, count?: number): N {
68
- return new TreeMultisetNode(key, value, count) as N;
68
+ return new TreeMultimapNode(key, value, count) as N;
69
69
  }
70
70
 
71
71
  /**
@@ -85,7 +85,7 @@ export class TreeMultiset<V = any, N extends TreeMultisetNode<V, N> = TreeMultis
85
85
  if(keyOrNode === null) return undefined;
86
86
  let inserted: N | undefined = undefined,
87
87
  newNode: N | undefined;
88
- if (keyOrNode instanceof TreeMultisetNode) {
88
+ if (keyOrNode instanceof TreeMultimapNode) {
89
89
  newNode = this.createNode(keyOrNode.key, keyOrNode.value, keyOrNode.count);
90
90
  } else if (keyOrNode === undefined) {
91
91
  newNode = undefined;
@@ -184,10 +184,10 @@ export class TreeMultiset<V = any, N extends TreeMultisetNode<V, N> = TreeMultis
184
184
  }
185
185
 
186
186
  /**
187
- * The `addMany` function adds multiple keys or nodes to a TreeMultiset and returns an array of the
187
+ * The `addMany` function adds multiple keys or nodes to a TreeMultimap and returns an array of the
188
188
  * inserted nodes.
189
189
  * @param {(BTNKey | undefined)[] | (N | undefined)[]} keysOrNodes - An array of keys or nodes to be
190
- * added to the multiset. Each element can be either a BTNKey or a TreeMultisetNode.
190
+ * added to the multiset. Each element can be either a BTNKey or a TreeMultimapNode.
191
191
  * @param {V[]} [data] - The `data` parameter is an optional array of values that correspond
192
192
  * to the keys or nodes being added to the multiset. It is used to associate additional data with
193
193
  * each key or node.
@@ -199,7 +199,7 @@ export class TreeMultiset<V = any, N extends TreeMultisetNode<V, N> = TreeMultis
199
199
  for (let i = 0; i < keysOrNodes.length; i++) {
200
200
  const keyOrNode = keysOrNodes[i];
201
201
 
202
- if (keyOrNode instanceof TreeMultisetNode) {
202
+ if (keyOrNode instanceof TreeMultimapNode) {
203
203
  inserted.push(this.add(keyOrNode.key, keyOrNode.value, keyOrNode.count));
204
204
  continue;
205
205
  }
@@ -2,5 +2,5 @@ export * from './binary-tree';
2
2
  export * from './bst';
3
3
  export * from './avl-tree';
4
4
  export * from './segment-tree';
5
- export * from './tree-multiset';
5
+ export * from './tree-multimap';
6
6
  export * from './rb-tree';
@@ -0,0 +1,6 @@
1
+ import {TreeMultimapNode} from '../../../data-structures';
2
+ import {AVLTreeOptions} from './avl-tree';
3
+
4
+ export type TreeMultimapNodeNested<T> = TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, TreeMultimapNode<T, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5
+
6
+ export type TreeMultimapOptions = Omit<AVLTreeOptions, 'isMergeDuplicatedNodeByKey'> & {}
@@ -14,12 +14,12 @@ suite
14
14
  rbTree.add(arr[i]);
15
15
  }
16
16
  })
17
- .add(`${HUNDRED_THOUSAND.toLocaleString()} add & 1000 delete randomly`, () => {
17
+ .add(`${HUNDRED_THOUSAND.toLocaleString()} add & delete randomly`, () => {
18
18
  rbTree.clear();
19
19
  for (let i = 0; i < arr.length; i++) {
20
20
  rbTree.add(arr[i]);
21
21
  }
22
- for (let i = 0; i < 1000; i++) {
22
+ for (let i = 0; i < arr.length; i++) {
23
23
  rbTree.delete(arr[i]);
24
24
  }
25
25
  })