data-structure-typed 1.36.7 → 1.36.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.
- package/.eslintrc.js +1 -1
- package/CHANGELOG.md +3 -1
- package/README.md +8 -0
- package/dist/data-structures/binary-tree/avl-tree.d.ts +5 -5
- package/dist/data-structures/binary-tree/avl-tree.js +6 -6
- package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/binary-tree.d.ts +18 -85
- package/dist/data-structures/binary-tree/binary-tree.js +76 -128
- package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/tree-multiset.d.ts +9 -16
- package/dist/data-structures/binary-tree/tree-multiset.js +10 -20
- package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
- package/dist/data-structures/hash/hash-map.d.ts +1 -1
- package/dist/data-structures/hash/hash-map.js +1 -1
- package/dist/data-structures/hash/hash-table.d.ts +3 -3
- package/dist/data-structures/hash/hash-table.js +3 -3
- package/dist/data-structures/heap/heap.d.ts +136 -11
- package/dist/data-structures/heap/heap.js +293 -13
- package/dist/data-structures/heap/heap.js.map +1 -1
- package/dist/data-structures/linked-list/skip-linked-list.d.ts +3 -3
- package/dist/data-structures/linked-list/skip-linked-list.js +3 -3
- package/dist/data-structures/queue/deque.d.ts +2 -2
- package/dist/data-structures/queue/deque.js +2 -2
- package/dist/data-structures/queue/queue.js +1 -1
- package/dist/data-structures/trie/trie.d.ts +2 -2
- package/dist/data-structures/trie/trie.js +2 -2
- package/dist/interfaces/binary-tree.d.ts +1 -1
- package/lib/data-structures/binary-tree/avl-tree.d.ts +5 -5
- package/lib/data-structures/binary-tree/avl-tree.js +6 -6
- package/lib/data-structures/binary-tree/binary-tree.d.ts +18 -85
- package/lib/data-structures/binary-tree/binary-tree.js +76 -128
- package/lib/data-structures/binary-tree/tree-multiset.d.ts +9 -16
- package/lib/data-structures/binary-tree/tree-multiset.js +10 -20
- package/lib/data-structures/hash/hash-map.d.ts +1 -1
- package/lib/data-structures/hash/hash-map.js +1 -1
- package/lib/data-structures/hash/hash-table.d.ts +3 -3
- package/lib/data-structures/hash/hash-table.js +3 -3
- package/lib/data-structures/heap/heap.d.ts +136 -11
- package/lib/data-structures/heap/heap.js +290 -12
- package/lib/data-structures/linked-list/skip-linked-list.d.ts +3 -3
- package/lib/data-structures/linked-list/skip-linked-list.js +3 -3
- package/lib/data-structures/queue/deque.d.ts +2 -2
- package/lib/data-structures/queue/deque.js +2 -2
- package/lib/data-structures/queue/queue.js +1 -1
- package/lib/data-structures/trie/trie.d.ts +2 -2
- package/lib/data-structures/trie/trie.js +2 -2
- package/lib/interfaces/binary-tree.d.ts +1 -1
- package/package.json +7 -6
- package/src/data-structures/binary-tree/avl-tree.ts +6 -6
- package/src/data-structures/binary-tree/binary-tree.ts +79 -214
- package/src/data-structures/binary-tree/rb-tree.ts +3 -3
- package/src/data-structures/binary-tree/tree-multiset.ts +10 -21
- package/src/data-structures/hash/hash-map.ts +1 -1
- package/src/data-structures/hash/hash-table.ts +3 -3
- package/src/data-structures/heap/heap.ts +340 -16
- package/src/data-structures/linked-list/skip-linked-list.ts +3 -3
- package/src/data-structures/queue/deque.ts +2 -2
- package/src/data-structures/queue/queue.ts +1 -1
- package/src/data-structures/trie/trie.ts +2 -2
- package/src/interfaces/binary-tree.ts +1 -1
- package/test/types/index.ts +1 -0
- package/test/types/utils/big-o.ts +1 -0
- package/test/types/utils/index.ts +1 -0
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +14 -14
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +2 -2
- package/test/unit/data-structures/binary-tree/bst.test.ts +28 -28
- package/test/unit/data-structures/binary-tree/overall.test.ts +3 -3
- package/test/unit/data-structures/binary-tree/rb-tree.test.ts +1 -1
- package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +28 -28
- package/test/unit/data-structures/graph/directed-graph.test.ts +1 -1
- package/test/unit/data-structures/graph/undirected-graph.test.ts +1 -1
- package/test/unit/data-structures/hash/hash-map.test.ts +2 -2
- package/test/unit/data-structures/hash/hash-table.test.ts +5 -5
- package/test/unit/data-structures/heap/heap.test.ts +192 -1
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +7 -7
- package/test/unit/data-structures/linked-list/skip-list.test.ts +2 -2
- package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +1 -1
- package/test/unit/data-structures/queue/deque.test.ts +3 -3
- package/test/unit/data-structures/trie/trie.test.ts +5 -5
- package/test/utils/big-o.ts +199 -0
- package/test/utils/index.ts +1 -1
- package/umd/bundle.min.js +1 -1
- package/umd/bundle.min.js.map +1 -1
- package/test/utils/magnitude.ts +0 -21
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.Heap = void 0;
|
|
9
|
+
exports.FibonacciHeap = exports.FibonacciHeapNode = exports.Heap = void 0;
|
|
10
10
|
class Heap {
|
|
11
11
|
constructor(comparator) {
|
|
12
12
|
this.nodes = [];
|
|
@@ -14,20 +14,27 @@ class Heap {
|
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Insert an element into the heap and maintain the heap properties.
|
|
17
|
-
* @param
|
|
17
|
+
* @param element - The element to be inserted.
|
|
18
18
|
*/
|
|
19
|
-
add(
|
|
20
|
-
this.
|
|
19
|
+
add(element) {
|
|
20
|
+
return this.push(element);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Insert an element into the heap and maintain the heap properties.
|
|
24
|
+
* @param element - The element to be inserted.
|
|
25
|
+
*/
|
|
26
|
+
push(element) {
|
|
27
|
+
this.nodes.push(element);
|
|
21
28
|
this.bubbleUp(this.nodes.length - 1);
|
|
22
29
|
return this;
|
|
23
30
|
}
|
|
24
31
|
/**
|
|
25
32
|
* Remove and return the top element (smallest or largest element) from the heap.
|
|
26
|
-
* @returns The top element or
|
|
33
|
+
* @returns The top element or undefined if the heap is empty.
|
|
27
34
|
*/
|
|
28
35
|
poll() {
|
|
29
36
|
if (this.nodes.length === 0) {
|
|
30
|
-
return
|
|
37
|
+
return undefined;
|
|
31
38
|
}
|
|
32
39
|
if (this.nodes.length === 1) {
|
|
33
40
|
return this.nodes.pop();
|
|
@@ -37,6 +44,13 @@ class Heap {
|
|
|
37
44
|
this.sinkDown(0);
|
|
38
45
|
return topValue;
|
|
39
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
49
|
+
* @returns The top element or undefined if the heap is empty.
|
|
50
|
+
*/
|
|
51
|
+
pop() {
|
|
52
|
+
return this.poll();
|
|
53
|
+
}
|
|
40
54
|
/**
|
|
41
55
|
* Float operation to maintain heap properties after adding an element.
|
|
42
56
|
* @param index - The index of the newly added element.
|
|
@@ -87,11 +101,11 @@ class Heap {
|
|
|
87
101
|
}
|
|
88
102
|
/**
|
|
89
103
|
* Peek at the top element of the heap without removing it.
|
|
90
|
-
* @returns The top element or
|
|
104
|
+
* @returns The top element or undefined if the heap is empty.
|
|
91
105
|
*/
|
|
92
106
|
peek() {
|
|
93
107
|
if (this.nodes.length === 0) {
|
|
94
|
-
return
|
|
108
|
+
return undefined;
|
|
95
109
|
}
|
|
96
110
|
return this.nodes[0];
|
|
97
111
|
}
|
|
@@ -103,11 +117,11 @@ class Heap {
|
|
|
103
117
|
}
|
|
104
118
|
/**
|
|
105
119
|
* Get the last element in the heap, which is not necessarily a leaf node.
|
|
106
|
-
* @returns The last element or
|
|
120
|
+
* @returns The last element or undefined if the heap is empty.
|
|
107
121
|
*/
|
|
108
122
|
get leaf() {
|
|
109
123
|
var _a;
|
|
110
|
-
return (_a = this.nodes[this.size - 1]) !== null && _a !== void 0 ? _a :
|
|
124
|
+
return (_a = this.nodes[this.size - 1]) !== null && _a !== void 0 ? _a : undefined;
|
|
111
125
|
}
|
|
112
126
|
/**
|
|
113
127
|
* Check if the heap is empty.
|
|
@@ -132,11 +146,11 @@ class Heap {
|
|
|
132
146
|
}
|
|
133
147
|
/**
|
|
134
148
|
* Use a comparison function to check whether a binary heap contains a specific element.
|
|
135
|
-
* @param
|
|
149
|
+
* @param element - the element to check.
|
|
136
150
|
* @returns Returns true if the specified element is contained; otherwise, returns false.
|
|
137
151
|
*/
|
|
138
|
-
has(
|
|
139
|
-
return this.nodes.includes(
|
|
152
|
+
has(element) {
|
|
153
|
+
return this.nodes.includes(element);
|
|
140
154
|
}
|
|
141
155
|
/**
|
|
142
156
|
* Depth-first search (DFS) method, different traversal orders can be selected。
|
|
@@ -215,4 +229,270 @@ class Heap {
|
|
|
215
229
|
}
|
|
216
230
|
}
|
|
217
231
|
exports.Heap = Heap;
|
|
232
|
+
class FibonacciHeapNode {
|
|
233
|
+
constructor(element, degree = 0) {
|
|
234
|
+
this.element = element;
|
|
235
|
+
this.degree = degree;
|
|
236
|
+
this.marked = false;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.FibonacciHeapNode = FibonacciHeapNode;
|
|
240
|
+
class FibonacciHeap {
|
|
241
|
+
constructor(comparator) {
|
|
242
|
+
this.size = 0;
|
|
243
|
+
this.clear();
|
|
244
|
+
this.comparator = comparator || this.defaultComparator;
|
|
245
|
+
if (typeof this.comparator !== 'function') {
|
|
246
|
+
throw new Error('FibonacciHeap constructor: given comparator should be a function.');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Default comparator function used by the heap.
|
|
251
|
+
* @param {E} a
|
|
252
|
+
* @param {E} b
|
|
253
|
+
* @protected
|
|
254
|
+
*/
|
|
255
|
+
defaultComparator(a, b) {
|
|
256
|
+
if (a < b)
|
|
257
|
+
return -1;
|
|
258
|
+
if (a > b)
|
|
259
|
+
return 1;
|
|
260
|
+
return 0;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get the size (number of elements) of the heap.
|
|
264
|
+
* @returns {number} The size of the heap. Returns 0 if the heap is empty. Returns -1 if the heap is invalid.
|
|
265
|
+
*/
|
|
266
|
+
clear() {
|
|
267
|
+
this.root = undefined;
|
|
268
|
+
this.min = undefined;
|
|
269
|
+
this.size = 0;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Create a new node.
|
|
273
|
+
* @param element
|
|
274
|
+
* @protected
|
|
275
|
+
*/
|
|
276
|
+
createNode(element) {
|
|
277
|
+
return new FibonacciHeapNode(element);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Merge the given node with the root list.
|
|
281
|
+
* @param node - The node to be merged.
|
|
282
|
+
*/
|
|
283
|
+
mergeWithRoot(node) {
|
|
284
|
+
if (!this.root) {
|
|
285
|
+
this.root = node;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
node.right = this.root.right;
|
|
289
|
+
node.left = this.root;
|
|
290
|
+
this.root.right.left = node;
|
|
291
|
+
this.root.right = node;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* O(1) time operation.
|
|
296
|
+
* Insert an element into the heap and maintain the heap properties.
|
|
297
|
+
* @param element
|
|
298
|
+
* @returns {FibonacciHeap<E>} FibonacciHeap<E> - The heap itself.
|
|
299
|
+
*/
|
|
300
|
+
add(element) {
|
|
301
|
+
return this.push(element);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* O(1) time operation.
|
|
305
|
+
* Insert an element into the heap and maintain the heap properties.
|
|
306
|
+
* @param element
|
|
307
|
+
* @returns {FibonacciHeap<E>} FibonacciHeap<E> - The heap itself.
|
|
308
|
+
*/
|
|
309
|
+
push(element) {
|
|
310
|
+
const node = this.createNode(element);
|
|
311
|
+
node.left = node;
|
|
312
|
+
node.right = node;
|
|
313
|
+
this.mergeWithRoot(node);
|
|
314
|
+
if (!this.min || this.comparator(node.element, this.min.element) <= 0) {
|
|
315
|
+
this.min = node;
|
|
316
|
+
}
|
|
317
|
+
this.size++;
|
|
318
|
+
return this;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* O(1) time operation.
|
|
322
|
+
* Peek at the top element of the heap without removing it.
|
|
323
|
+
* @returns The top element or undefined if the heap is empty.
|
|
324
|
+
* @protected
|
|
325
|
+
*/
|
|
326
|
+
peek() {
|
|
327
|
+
return this.min ? this.min.element : undefined;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* O(1) time operation.
|
|
331
|
+
* Get the size (number of elements) of the heap.
|
|
332
|
+
* @param {FibonacciHeapNode<E>} head - The head of the linked list.
|
|
333
|
+
* @protected
|
|
334
|
+
* @returns FibonacciHeapNode<E>[] - An array containing the nodes of the linked list.
|
|
335
|
+
*/
|
|
336
|
+
consumeLinkedList(head) {
|
|
337
|
+
const nodes = [];
|
|
338
|
+
if (!head)
|
|
339
|
+
return nodes;
|
|
340
|
+
let node = head;
|
|
341
|
+
let flag = false;
|
|
342
|
+
while (true) {
|
|
343
|
+
if (node === head && flag)
|
|
344
|
+
break;
|
|
345
|
+
else if (node === head)
|
|
346
|
+
flag = true;
|
|
347
|
+
if (node) {
|
|
348
|
+
nodes.push(node);
|
|
349
|
+
node = node.right;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return nodes;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* O(log n) time operation.
|
|
356
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
357
|
+
* @param node - The node to be removed.
|
|
358
|
+
* @protected
|
|
359
|
+
*/
|
|
360
|
+
removeFromRoot(node) {
|
|
361
|
+
if (this.root === node)
|
|
362
|
+
this.root = node.right;
|
|
363
|
+
if (node.left)
|
|
364
|
+
node.left.right = node.right;
|
|
365
|
+
if (node.right)
|
|
366
|
+
node.right.left = node.left;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* O(log n) time operation.
|
|
370
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
371
|
+
* @param parent
|
|
372
|
+
* @param node
|
|
373
|
+
*/
|
|
374
|
+
mergeWithChild(parent, node) {
|
|
375
|
+
if (!parent.child) {
|
|
376
|
+
parent.child = node;
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
node.right = parent.child.right;
|
|
380
|
+
node.left = parent.child;
|
|
381
|
+
parent.child.right.left = node;
|
|
382
|
+
parent.child.right = node;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* O(log n) time operation.
|
|
387
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
388
|
+
* @param y
|
|
389
|
+
* @param x
|
|
390
|
+
* @protected
|
|
391
|
+
*/
|
|
392
|
+
link(y, x) {
|
|
393
|
+
this.removeFromRoot(y);
|
|
394
|
+
y.left = y;
|
|
395
|
+
y.right = y;
|
|
396
|
+
this.mergeWithChild(x, y);
|
|
397
|
+
x.degree++;
|
|
398
|
+
y.parent = x;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* O(log n) time operation.
|
|
402
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
403
|
+
* @protected
|
|
404
|
+
*/
|
|
405
|
+
consolidate() {
|
|
406
|
+
const A = new Array(this.size);
|
|
407
|
+
const nodes = this.consumeLinkedList(this.root);
|
|
408
|
+
let x, y, d, t;
|
|
409
|
+
for (const node of nodes) {
|
|
410
|
+
x = node;
|
|
411
|
+
d = x.degree;
|
|
412
|
+
while (A[d]) {
|
|
413
|
+
y = A[d];
|
|
414
|
+
if (this.comparator(x.element, y.element) > 0) {
|
|
415
|
+
t = x;
|
|
416
|
+
x = y;
|
|
417
|
+
y = t;
|
|
418
|
+
}
|
|
419
|
+
this.link(y, x);
|
|
420
|
+
A[d] = undefined;
|
|
421
|
+
d++;
|
|
422
|
+
}
|
|
423
|
+
A[d] = x;
|
|
424
|
+
}
|
|
425
|
+
for (let i = 0; i < this.size; i++) {
|
|
426
|
+
if (A[i] && this.comparator(A[i].element, this.min.element) <= 0) {
|
|
427
|
+
this.min = A[i];
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* O(log n) time operation.
|
|
433
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
434
|
+
* @returns The top element or undefined if the heap is empty.
|
|
435
|
+
*/
|
|
436
|
+
poll() {
|
|
437
|
+
return this.pop();
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* O(log n) time operation.
|
|
441
|
+
* Remove and return the top element (smallest or largest element) from the heap.
|
|
442
|
+
* @returns The top element or undefined if the heap is empty.
|
|
443
|
+
*/
|
|
444
|
+
pop() {
|
|
445
|
+
if (this.size === 0)
|
|
446
|
+
return undefined;
|
|
447
|
+
const z = this.min;
|
|
448
|
+
if (z.child) {
|
|
449
|
+
const nodes = this.consumeLinkedList(z.child);
|
|
450
|
+
for (const node of nodes) {
|
|
451
|
+
this.mergeWithRoot(node);
|
|
452
|
+
node.parent = undefined;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
this.removeFromRoot(z);
|
|
456
|
+
if (z === z.right) {
|
|
457
|
+
this.min = undefined;
|
|
458
|
+
this.root = undefined;
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
this.min = z.right;
|
|
462
|
+
this.consolidate();
|
|
463
|
+
}
|
|
464
|
+
this.size--;
|
|
465
|
+
return z.element;
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* O(log n) time operation.
|
|
469
|
+
* merge two heaps. The heap that is merged will be cleared. The heap that is merged into will remain.
|
|
470
|
+
* @param heapToMerge
|
|
471
|
+
*/
|
|
472
|
+
merge(heapToMerge) {
|
|
473
|
+
if (heapToMerge.size === 0) {
|
|
474
|
+
return; // Nothing to merge
|
|
475
|
+
}
|
|
476
|
+
// Merge the root lists of the two heaps
|
|
477
|
+
if (this.root && heapToMerge.root) {
|
|
478
|
+
const thisRoot = this.root;
|
|
479
|
+
const otherRoot = heapToMerge.root;
|
|
480
|
+
const thisRootRight = thisRoot.right;
|
|
481
|
+
const otherRootLeft = otherRoot.left;
|
|
482
|
+
thisRoot.right = otherRoot;
|
|
483
|
+
otherRoot.left = thisRoot;
|
|
484
|
+
thisRootRight.left = otherRootLeft;
|
|
485
|
+
otherRootLeft.right = thisRootRight;
|
|
486
|
+
}
|
|
487
|
+
// Update the minimum node
|
|
488
|
+
if (!this.min || (heapToMerge.min && this.comparator(heapToMerge.min.element, this.min.element) < 0)) {
|
|
489
|
+
this.min = heapToMerge.min;
|
|
490
|
+
}
|
|
491
|
+
// Update the size
|
|
492
|
+
this.size += heapToMerge.size;
|
|
493
|
+
// Clear the heap that was merged
|
|
494
|
+
heapToMerge.clear();
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
exports.FibonacciHeap = FibonacciHeap;
|
|
218
498
|
//# sourceMappingURL=heap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../src/data-structures/heap/heap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../src/data-structures/heap/heap.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,10 +52,10 @@ export declare class SkipList<K, V> {
|
|
|
52
52
|
*/
|
|
53
53
|
get(key: K): V | undefined;
|
|
54
54
|
/**
|
|
55
|
-
* The `
|
|
55
|
+
* The `delete` function removes a node with a specific key from a Skip List data structure.
|
|
56
56
|
* @param {K} key - The key parameter represents the key of the node that needs to be removed from the skip list.
|
|
57
|
-
* @returns The `
|
|
57
|
+
* @returns The `delete` method returns a boolean value. It returns `true` if the key was successfully removed from the
|
|
58
58
|
* skip list, and `false` if the key was not found in the skip list.
|
|
59
59
|
*/
|
|
60
|
-
|
|
60
|
+
delete(key: K): boolean;
|
|
61
61
|
}
|
|
@@ -109,12 +109,12 @@ class SkipList {
|
|
|
109
109
|
return undefined;
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
* The `
|
|
112
|
+
* The `delete` function removes a node with a specific key from a Skip List data structure.
|
|
113
113
|
* @param {K} key - The key parameter represents the key of the node that needs to be removed from the skip list.
|
|
114
|
-
* @returns The `
|
|
114
|
+
* @returns The `delete` method returns a boolean value. It returns `true` if the key was successfully removed from the
|
|
115
115
|
* skip list, and `false` if the key was not found in the skip list.
|
|
116
116
|
*/
|
|
117
|
-
|
|
117
|
+
delete(key) {
|
|
118
118
|
const update = new Array(this.maxLevel).fill(this.head);
|
|
119
119
|
let current = this.head;
|
|
120
120
|
for (let i = this.level - 1; i >= 0; i--) {
|
|
@@ -150,12 +150,12 @@ export declare class ArrayDeque<E> {
|
|
|
150
150
|
*/
|
|
151
151
|
insert(index: number, value: E): E[];
|
|
152
152
|
/**
|
|
153
|
-
* The
|
|
153
|
+
* The delete function removes an element from an array at a specified index.
|
|
154
154
|
* @param {number} index - The index parameter specifies the position of the element to be removed from the array. It
|
|
155
155
|
* is a number that represents the index of the element to be removed.
|
|
156
156
|
* @returns The method is returning an array containing the removed element.
|
|
157
157
|
*/
|
|
158
|
-
|
|
158
|
+
delete(index: number): E[];
|
|
159
159
|
/**
|
|
160
160
|
* The function checks if an array called "_nodes" is empty.
|
|
161
161
|
* @returns The method `isEmpty()` is returning a boolean value. It returns `true` if the length of the `_nodes` array
|
|
@@ -256,12 +256,12 @@ class ArrayDeque {
|
|
|
256
256
|
return this._nodes.splice(index, 0, value);
|
|
257
257
|
}
|
|
258
258
|
/**
|
|
259
|
-
* The
|
|
259
|
+
* The delete function removes an element from an array at a specified index.
|
|
260
260
|
* @param {number} index - The index parameter specifies the position of the element to be removed from the array. It
|
|
261
261
|
* is a number that represents the index of the element to be removed.
|
|
262
262
|
* @returns The method is returning an array containing the removed element.
|
|
263
263
|
*/
|
|
264
|
-
|
|
264
|
+
delete(index) {
|
|
265
265
|
return this._nodes.splice(index, 1);
|
|
266
266
|
}
|
|
267
267
|
/**
|
|
@@ -94,7 +94,7 @@ class Queue {
|
|
|
94
94
|
this.offset += 1;
|
|
95
95
|
if (this.offset * 2 < this.nodes.length)
|
|
96
96
|
return first;
|
|
97
|
-
// only
|
|
97
|
+
// only delete dequeued elements when reaching half size
|
|
98
98
|
// to decrease latency of shifting elements.
|
|
99
99
|
this.nodes = this.nodes.slice(this.offset);
|
|
100
100
|
this.offset = 0;
|
|
@@ -45,10 +45,10 @@ export declare class Trie {
|
|
|
45
45
|
private _caseProcess;
|
|
46
46
|
/**
|
|
47
47
|
* Remove a word from the Trie structure.
|
|
48
|
-
* @param{string} word - The word to
|
|
48
|
+
* @param{string} word - The word to delete.
|
|
49
49
|
* @returns {boolean} True if the word was successfully removed.
|
|
50
50
|
*/
|
|
51
|
-
|
|
51
|
+
delete(word: string): boolean;
|
|
52
52
|
getHeight(): number;
|
|
53
53
|
/**
|
|
54
54
|
* Check if a given input string has an absolute prefix in the Trie, meaning it's not a complete word.
|
|
@@ -100,10 +100,10 @@ class Trie {
|
|
|
100
100
|
}
|
|
101
101
|
/**
|
|
102
102
|
* Remove a word from the Trie structure.
|
|
103
|
-
* @param{string} word - The word to
|
|
103
|
+
* @param{string} word - The word to delete.
|
|
104
104
|
* @returns {boolean} True if the word was successfully removed.
|
|
105
105
|
*/
|
|
106
|
-
|
|
106
|
+
delete(word) {
|
|
107
107
|
word = this._caseProcess(word);
|
|
108
108
|
let isDeleted = false;
|
|
109
109
|
const dfs = (cur, i) => {
|
|
@@ -3,5 +3,5 @@ import { BinaryTreeDeletedResult, BinaryTreeNodeKey } from '../types';
|
|
|
3
3
|
export interface IBinaryTree<N extends BinaryTreeNode<N['val'], N>> {
|
|
4
4
|
createNode(key: BinaryTreeNodeKey, val?: N['val']): N;
|
|
5
5
|
add(keyOrNode: BinaryTreeNodeKey | N | null, val?: N['val']): N | null | undefined;
|
|
6
|
-
|
|
6
|
+
delete(nodeOrKey: N | BinaryTreeNodeKey): BinaryTreeDeletedResult<N>[];
|
|
7
7
|
}
|
|
@@ -21,13 +21,13 @@ export declare class AVLTree<N extends AVLTreeNode<N['val'], N> = AVLTreeNode> e
|
|
|
21
21
|
*/
|
|
22
22
|
constructor(options?: AVLTreeOptions);
|
|
23
23
|
/**
|
|
24
|
-
* The `
|
|
25
|
-
* @param {N} srcNode - The source node that you want to
|
|
24
|
+
* The `_swap` function swaps the location of two nodes in a binary tree.
|
|
25
|
+
* @param {N} srcNode - The source node that you want to _swap with the destination node.
|
|
26
26
|
* @param {N} destNode - The `destNode` parameter represents the destination node where the values from `srcNode` will
|
|
27
27
|
* be swapped to.
|
|
28
28
|
* @returns The `destNode` is being returned.
|
|
29
29
|
*/
|
|
30
|
-
|
|
30
|
+
protected _swap(srcNode: N, destNode: N): N;
|
|
31
31
|
/**
|
|
32
32
|
* The function creates a new AVL tree node with the given key and value.
|
|
33
33
|
* @param {BinaryTreeNodeKey} key - The `key` parameter is the identifier for the binary tree node. It is used to uniquely
|
|
@@ -46,13 +46,13 @@ export declare class AVLTree<N extends AVLTreeNode<N['val'], N> = AVLTreeNode> e
|
|
|
46
46
|
*/
|
|
47
47
|
add(key: BinaryTreeNodeKey, val?: N['val']): N | null | undefined;
|
|
48
48
|
/**
|
|
49
|
-
* The function overrides the
|
|
49
|
+
* The function overrides the delete method of a binary tree and performs additional operations to balance the tree after
|
|
50
50
|
* deletion.
|
|
51
51
|
* @param {BinaryTreeNodeKey} key - The `key` parameter represents the identifier of the binary tree node that needs to be
|
|
52
52
|
* removed.
|
|
53
53
|
* @returns The method is returning an array of `BinaryTreeDeletedResult<N>` objects.
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
delete(key: BinaryTreeNodeKey): BinaryTreeDeletedResult<N>[];
|
|
56
56
|
/**
|
|
57
57
|
* The balance factor of a given AVL tree node is calculated by subtracting the height of its left subtree from the
|
|
58
58
|
* height of its right subtree.
|
|
@@ -23,13 +23,13 @@ export class AVLTree extends BST {
|
|
|
23
23
|
super(options);
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
* The `
|
|
27
|
-
* @param {N} srcNode - The source node that you want to
|
|
26
|
+
* The `_swap` function swaps the location of two nodes in a binary tree.
|
|
27
|
+
* @param {N} srcNode - The source node that you want to _swap with the destination node.
|
|
28
28
|
* @param {N} destNode - The `destNode` parameter represents the destination node where the values from `srcNode` will
|
|
29
29
|
* be swapped to.
|
|
30
30
|
* @returns The `destNode` is being returned.
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
_swap(srcNode, destNode) {
|
|
33
33
|
const { key, val, height } = destNode;
|
|
34
34
|
const tempNode = this.createNode(key, val);
|
|
35
35
|
if (tempNode) {
|
|
@@ -69,14 +69,14 @@ export class AVLTree extends BST {
|
|
|
69
69
|
return inserted;
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* The function overrides the
|
|
72
|
+
* The function overrides the delete method of a binary tree and performs additional operations to balance the tree after
|
|
73
73
|
* deletion.
|
|
74
74
|
* @param {BinaryTreeNodeKey} key - The `key` parameter represents the identifier of the binary tree node that needs to be
|
|
75
75
|
* removed.
|
|
76
76
|
* @returns The method is returning an array of `BinaryTreeDeletedResult<N>` objects.
|
|
77
77
|
*/
|
|
78
|
-
|
|
79
|
-
const deletedResults = super.
|
|
78
|
+
delete(key) {
|
|
79
|
+
const deletedResults = super.delete(key);
|
|
80
80
|
for (const { needBalanced } of deletedResults) {
|
|
81
81
|
if (needBalanced) {
|
|
82
82
|
this._balancePath(needBalanced);
|