data-structure-typed 1.38.4 → 1.38.6

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 (47) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +9 -3
  3. package/dist/cjs/data-structures/binary-tree/avl-tree.js +9 -4
  4. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  5. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +31 -79
  6. package/dist/cjs/data-structures/binary-tree/binary-tree.js +50 -59
  7. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/bst.d.ts +7 -7
  9. package/dist/cjs/data-structures/binary-tree/bst.js +13 -13
  10. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/tree-multiset.d.ts +9 -5
  12. package/dist/cjs/data-structures/binary-tree/tree-multiset.js +9 -5
  13. package/dist/cjs/data-structures/binary-tree/tree-multiset.js.map +1 -1
  14. package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +12 -3
  15. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  16. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +17 -4
  17. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +2 -0
  18. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  19. package/dist/cjs/interfaces/binary-tree.d.ts +2 -2
  20. package/dist/cjs/types/helpers.d.ts +2 -0
  21. package/dist/cjs/types/helpers.js.map +1 -1
  22. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +9 -3
  23. package/dist/mjs/data-structures/binary-tree/avl-tree.js +9 -4
  24. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +31 -79
  25. package/dist/mjs/data-structures/binary-tree/binary-tree.js +50 -59
  26. package/dist/mjs/data-structures/binary-tree/bst.d.ts +7 -7
  27. package/dist/mjs/data-structures/binary-tree/bst.js +13 -13
  28. package/dist/mjs/data-structures/binary-tree/tree-multiset.d.ts +9 -5
  29. package/dist/mjs/data-structures/binary-tree/tree-multiset.js +9 -5
  30. package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +12 -3
  31. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +17 -4
  32. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +2 -0
  33. package/dist/mjs/interfaces/binary-tree.d.ts +2 -2
  34. package/dist/mjs/types/helpers.d.ts +2 -0
  35. package/dist/umd/index.global.js +1 -1
  36. package/dist/umd/index.global.js.map +1 -1
  37. package/package.json +5 -5
  38. package/src/data-structures/binary-tree/avl-tree.ts +13 -4
  39. package/src/data-structures/binary-tree/binary-tree.ts +113 -69
  40. package/src/data-structures/binary-tree/bst.ts +17 -17
  41. package/src/data-structures/binary-tree/rb-tree.ts +2 -2
  42. package/src/data-structures/binary-tree/tree-multiset.ts +14 -6
  43. package/src/data-structures/linked-list/doubly-linked-list.ts +2 -5
  44. package/src/data-structures/linked-list/singly-linked-list.ts +2 -7
  45. package/src/interfaces/binary-tree.ts +2 -2
  46. package/src/types/helpers.ts +4 -0
  47. package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +14 -14
@@ -266,7 +266,7 @@ export class DoublyLinkedList<E = any> {
266
266
  * @returns The function `findNodeByValue` returns a `DoublyLinkedListNode<E>` if a node with the specified value `val`
267
267
  * is found in the linked list. If no such node is found, it returns `null`.
268
268
  */
269
- findNode(val: E): DoublyLinkedListNode<E> | null {
269
+ findNode(val: E | null): DoublyLinkedListNode<E> | null {
270
270
  let current = this.head;
271
271
 
272
272
  while (current) {
@@ -341,7 +341,7 @@ export class DoublyLinkedList<E = any> {
341
341
  * @returns The `delete` method returns a boolean value. It returns `true` if the value or node was successfully
342
342
  * deleted from the doubly linked list, and `false` if the value or node was not found in the list.
343
343
  */
344
- delete(valOrNode: E | DoublyLinkedListNode<E>): boolean {
344
+ delete(valOrNode: E | DoublyLinkedListNode<E> | null): boolean {
345
345
  let node: DoublyLinkedListNode<E> | null;
346
346
 
347
347
  if (valOrNode instanceof DoublyLinkedListNode) {
@@ -594,9 +594,6 @@ export class DoublyLinkedList<E = any> {
594
594
  return false;
595
595
  }
596
596
 
597
- insertBefore(existingValueOrNode: E, newValue: E): boolean;
598
- insertBefore(existingValueOrNode: DoublyLinkedListNode<E>, newValue: E): boolean;
599
-
600
597
  /**
601
598
  * The `insertBefore` function inserts a new value before an existing value or node in a doubly linked list.
602
599
  * @param {E | DoublyLinkedListNode<E>} existingValueOrNode - The existing value or node in the doubly linked list
@@ -214,9 +214,6 @@ export class SinglyLinkedList<E = any> {
214
214
  return removedNode!.val;
215
215
  }
216
216
 
217
- delete(valueOrNode: E): boolean;
218
- delete(valueOrNode: SinglyLinkedListNode<E>): boolean;
219
-
220
217
  /**
221
218
  * The delete function removes a node with a specific value from a singly linked list.
222
219
  * @param {E | SinglyLinkedListNode<E>} valueOrNode - The `valueOrNode` parameter can accept either a value of type `E`
@@ -224,7 +221,8 @@ export class SinglyLinkedList<E = any> {
224
221
  * @returns The `delete` method returns a boolean value. It returns `true` if the value or node is found and
225
222
  * successfully deleted from the linked list, and `false` if the value or node is not found in the linked list.
226
223
  */
227
- delete(valueOrNode: E | SinglyLinkedListNode<E>): boolean {
224
+ delete(valueOrNode: E | SinglyLinkedListNode<E> | null | undefined): boolean {
225
+ if (!valueOrNode) return false;
228
226
  let value: E;
229
227
  if (valueOrNode instanceof SinglyLinkedListNode) {
230
228
  value = valueOrNode.val;
@@ -397,9 +395,6 @@ export class SinglyLinkedList<E = any> {
397
395
  return null;
398
396
  }
399
397
 
400
- insertBefore(existingValue: E, newValue: E): boolean;
401
- insertBefore(existingValue: SinglyLinkedListNode<E>, newValue: E): boolean;
402
-
403
398
  /**
404
399
  * The `insertBefore` function inserts a new value before an existing value in a singly linked list.
405
400
  * @param {E | SinglyLinkedListNode<E>} existingValueOrNode - The existing value or node that you want to insert the
@@ -1,10 +1,10 @@
1
1
  import {BinaryTreeNode} from '../data-structures';
2
- import {BinaryTreeDeletedResult, BinaryTreeNodeKey} from '../types';
2
+ import {BinaryTreeDeletedResult, BinaryTreeNodeKey, MapCallback} from '../types';
3
3
 
4
4
  export interface IBinaryTree<N extends BinaryTreeNode<N['val'], N>> {
5
5
  createNode(key: BinaryTreeNodeKey, val?: N['val']): N;
6
6
 
7
7
  add(keyOrNode: BinaryTreeNodeKey | N | null, val?: N['val']): N | null | undefined;
8
8
 
9
- delete(nodeOrKey: N | BinaryTreeNodeKey): BinaryTreeDeletedResult<N>[];
9
+ delete<C extends MapCallback<N>>(identifier: ReturnType<C> | N, callback: C): BinaryTreeDeletedResult<N>[];
10
10
  }
@@ -1,9 +1,13 @@
1
+ import {BinaryTreeNodeKey} from './data-structures';
2
+
1
3
  export type Comparator<T> = (a: T, b: T) => number;
2
4
 
3
5
  export type DFSOrderPattern = 'pre' | 'in' | 'post';
4
6
 
5
7
  export type MapCallback<N, D = any> = (node: N) => D;
6
8
 
9
+ export type DefaultMapCallback<N, D = BinaryTreeNodeKey> = (node: N) => D;
10
+
7
11
  export type MapCallbackReturn<N> = ReturnType<MapCallback<N>>;
8
12
 
9
13
  export enum CP {
@@ -73,7 +73,7 @@ describe('TreeMultiset operations test', () => {
73
73
  expect(bfsNodesAfterBalanced[0].key).toBe(8);
74
74
  expect(bfsNodesAfterBalanced[bfsNodesAfterBalanced.length - 1].key).toBe(16);
75
75
 
76
- const removed11 = treeMultiset.delete(11, true);
76
+ const removed11 = treeMultiset.delete(11, undefined, true);
77
77
  expect(removed11 instanceof Array);
78
78
  expect(removed11[0]);
79
79
  expect(removed11[0].deleted);
@@ -84,7 +84,7 @@ describe('TreeMultiset operations test', () => {
84
84
 
85
85
  expect(treeMultiset.getHeight(15)).toBe(1);
86
86
 
87
- const removed1 = treeMultiset.delete(1, true);
87
+ const removed1 = treeMultiset.delete(1, undefined, true);
88
88
  expect(removed1 instanceof Array);
89
89
  expect(removed1[0]);
90
90
  expect(removed1[0].deleted);
@@ -94,7 +94,7 @@ describe('TreeMultiset operations test', () => {
94
94
 
95
95
  expect(treeMultiset.getHeight()).toBe(4);
96
96
 
97
- const removed4 = treeMultiset.delete(4, true);
97
+ const removed4 = treeMultiset.delete(4, undefined, true);
98
98
  expect(removed4 instanceof Array);
99
99
  expect(removed4[0]);
100
100
  expect(removed4[0].deleted);
@@ -103,7 +103,7 @@ describe('TreeMultiset operations test', () => {
103
103
  expect(treeMultiset.isAVLBalanced()).toBe(true);
104
104
  expect(treeMultiset.getHeight()).toBe(4);
105
105
 
106
- const removed10 = treeMultiset.delete(10, true);
106
+ const removed10 = treeMultiset.delete(10, undefined, true);
107
107
  expect(removed10 instanceof Array);
108
108
  expect(removed10[0]);
109
109
  expect(removed10[0].deleted);
@@ -112,7 +112,7 @@ describe('TreeMultiset operations test', () => {
112
112
 
113
113
  expect(treeMultiset.getHeight()).toBe(3);
114
114
 
115
- const removed15 = treeMultiset.delete(15, true);
115
+ const removed15 = treeMultiset.delete(15, undefined, true);
116
116
  expect(removed15 instanceof Array);
117
117
  expect(removed15[0]);
118
118
  expect(removed15[0].deleted);
@@ -121,7 +121,7 @@ describe('TreeMultiset operations test', () => {
121
121
  expect(treeMultiset.isAVLBalanced()).toBe(true);
122
122
  expect(treeMultiset.getHeight()).toBe(3);
123
123
 
124
- const removed5 = treeMultiset.delete(5, true);
124
+ const removed5 = treeMultiset.delete(5, undefined, true);
125
125
  expect(removed5 instanceof Array);
126
126
  expect(removed5[0]);
127
127
  expect(removed5[0].deleted);
@@ -130,7 +130,7 @@ describe('TreeMultiset operations test', () => {
130
130
  expect(treeMultiset.isAVLBalanced()).toBe(true);
131
131
  expect(treeMultiset.getHeight()).toBe(3);
132
132
 
133
- const removed13 = treeMultiset.delete(13, true);
133
+ const removed13 = treeMultiset.delete(13, undefined, true);
134
134
  expect(removed13 instanceof Array);
135
135
  expect(removed13[0]);
136
136
  expect(removed13[0].deleted);
@@ -138,7 +138,7 @@ describe('TreeMultiset operations test', () => {
138
138
  expect(treeMultiset.isAVLBalanced()).toBe(true);
139
139
  expect(treeMultiset.getHeight()).toBe(3);
140
140
 
141
- const removed3 = treeMultiset.delete(3, true);
141
+ const removed3 = treeMultiset.delete(3, undefined, true);
142
142
  expect(removed3 instanceof Array);
143
143
  expect(removed3[0]);
144
144
  expect(removed3[0].deleted);
@@ -146,7 +146,7 @@ describe('TreeMultiset operations test', () => {
146
146
  expect(treeMultiset.isAVLBalanced()).toBe(true);
147
147
  expect(treeMultiset.getHeight()).toBe(3);
148
148
 
149
- const removed8 = treeMultiset.delete(8, true);
149
+ const removed8 = treeMultiset.delete(8, undefined, true);
150
150
  expect(removed8 instanceof Array);
151
151
  expect(removed8[0]);
152
152
  expect(removed8[0].deleted);
@@ -154,17 +154,17 @@ describe('TreeMultiset operations test', () => {
154
154
  expect(treeMultiset.isAVLBalanced()).toBe(true);
155
155
  expect(treeMultiset.getHeight()).toBe(3);
156
156
 
157
- const removed6 = treeMultiset.delete(6, true);
157
+ const removed6 = treeMultiset.delete(6, undefined, true);
158
158
  expect(removed6 instanceof Array);
159
159
  expect(removed6[0]);
160
160
  expect(removed6[0].deleted);
161
161
  if (removed6[0].deleted) expect(removed6[0].deleted.key).toBe(6);
162
- expect(treeMultiset.delete(6, true).length).toBe(0);
162
+ expect(treeMultiset.delete(6, undefined, true).length).toBe(0);
163
163
  expect(treeMultiset.isAVLBalanced()).toBe(true);
164
164
 
165
165
  expect(treeMultiset.getHeight()).toBe(2);
166
166
 
167
- const removed7 = treeMultiset.delete(7, true);
167
+ const removed7 = treeMultiset.delete(7, undefined, true);
168
168
  expect(removed7 instanceof Array);
169
169
  expect(removed7[0]);
170
170
  expect(removed7[0].deleted);
@@ -172,7 +172,7 @@ describe('TreeMultiset operations test', () => {
172
172
  expect(treeMultiset.isAVLBalanced()).toBe(true);
173
173
  expect(treeMultiset.getHeight()).toBe(2);
174
174
 
175
- const removed9 = treeMultiset.delete(9, true);
175
+ const removed9 = treeMultiset.delete(9, undefined, true);
176
176
  expect(removed9 instanceof Array);
177
177
  expect(removed9[0]);
178
178
  expect(removed9[0].deleted);
@@ -180,7 +180,7 @@ describe('TreeMultiset operations test', () => {
180
180
  expect(treeMultiset.isAVLBalanced()).toBe(true);
181
181
  expect(treeMultiset.getHeight()).toBe(2);
182
182
 
183
- const removed14 = treeMultiset.delete(14, true);
183
+ const removed14 = treeMultiset.delete(14, undefined, true);
184
184
  expect(removed14 instanceof Array);
185
185
  expect(removed14[0]);
186
186
  expect(removed14[0].deleted);