data-structure-typed 1.50.1 → 1.50.2
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/CHANGELOG.md +2 -1
- package/README.md +26 -26
- package/benchmark/report.html +13 -13
- package/benchmark/report.json +153 -159
- package/dist/cjs/data-structures/base/iterable-base.d.ts +114 -9
- package/dist/cjs/data-structures/base/iterable-base.js +143 -7
- package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +43 -46
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +68 -71
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +244 -199
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +484 -376
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +54 -74
- package/dist/cjs/data-structures/binary-tree/bst.js +30 -71
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +78 -60
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +84 -89
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +37 -56
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js +64 -85
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.d.ts +1 -0
- package/dist/cjs/data-structures/graph/abstract-graph.js +3 -0
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.d.ts +14 -0
- package/dist/cjs/data-structures/graph/directed-graph.js +26 -0
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/map-graph.d.ts +8 -0
- package/dist/cjs/data-structures/graph/map-graph.js +14 -0
- package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.d.ts +16 -0
- package/dist/cjs/data-structures/graph/undirected-graph.js +25 -0
- package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +121 -15
- package/dist/cjs/data-structures/hash/hash-map.js +160 -25
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.d.ts +66 -6
- package/dist/cjs/data-structures/heap/heap.js +66 -6
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +67 -50
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +70 -64
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +128 -103
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +130 -112
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +63 -36
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js +63 -36
- package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/matrix/matrix.d.ts +35 -4
- package/dist/cjs/data-structures/matrix/matrix.js +50 -11
- package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +49 -19
- package/dist/cjs/data-structures/queue/deque.js +101 -47
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +39 -5
- package/dist/cjs/data-structures/queue/queue.js +47 -5
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/data-structures/stack/stack.d.ts +16 -0
- package/dist/cjs/data-structures/stack/stack.js +22 -0
- package/dist/cjs/data-structures/stack/stack.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +38 -1
- package/dist/cjs/data-structures/trie/trie.js +41 -0
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/cjs/types/data-structures/hash/hash-map.d.ts +4 -3
- package/dist/cjs/types/utils/utils.d.ts +1 -0
- package/dist/mjs/data-structures/base/iterable-base.d.ts +114 -9
- package/dist/mjs/data-structures/base/iterable-base.js +143 -7
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +43 -46
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +68 -71
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +244 -199
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +483 -375
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +54 -74
- package/dist/mjs/data-structures/binary-tree/bst.js +30 -71
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +78 -60
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +84 -89
- package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +37 -56
- package/dist/mjs/data-structures/binary-tree/tree-multimap.js +64 -85
- package/dist/mjs/data-structures/graph/abstract-graph.d.ts +1 -0
- package/dist/mjs/data-structures/graph/abstract-graph.js +3 -0
- package/dist/mjs/data-structures/graph/directed-graph.d.ts +14 -0
- package/dist/mjs/data-structures/graph/directed-graph.js +26 -0
- package/dist/mjs/data-structures/graph/map-graph.d.ts +8 -0
- package/dist/mjs/data-structures/graph/map-graph.js +14 -0
- package/dist/mjs/data-structures/graph/undirected-graph.d.ts +16 -0
- package/dist/mjs/data-structures/graph/undirected-graph.js +25 -0
- package/dist/mjs/data-structures/hash/hash-map.d.ts +121 -15
- package/dist/mjs/data-structures/hash/hash-map.js +160 -25
- package/dist/mjs/data-structures/heap/heap.d.ts +66 -6
- package/dist/mjs/data-structures/heap/heap.js +66 -6
- package/dist/mjs/data-structures/linked-list/doubly-linked-list.d.ts +67 -50
- package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +70 -64
- package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +128 -103
- package/dist/mjs/data-structures/linked-list/singly-linked-list.js +130 -112
- package/dist/mjs/data-structures/linked-list/skip-linked-list.d.ts +63 -36
- package/dist/mjs/data-structures/linked-list/skip-linked-list.js +63 -36
- package/dist/mjs/data-structures/matrix/matrix.d.ts +35 -4
- package/dist/mjs/data-structures/matrix/matrix.js +50 -11
- package/dist/mjs/data-structures/queue/deque.d.ts +49 -19
- package/dist/mjs/data-structures/queue/deque.js +101 -47
- package/dist/mjs/data-structures/queue/queue.d.ts +39 -5
- package/dist/mjs/data-structures/queue/queue.js +47 -5
- package/dist/mjs/data-structures/stack/stack.d.ts +16 -0
- package/dist/mjs/data-structures/stack/stack.js +22 -0
- package/dist/mjs/data-structures/trie/trie.d.ts +38 -1
- package/dist/mjs/data-structures/trie/trie.js +41 -0
- package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/mjs/types/data-structures/hash/hash-map.d.ts +4 -3
- package/dist/mjs/types/utils/utils.d.ts +1 -0
- package/dist/umd/data-structure-typed.js +1730 -1042
- package/dist/umd/data-structure-typed.min.js +3 -3
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +8 -3
- package/src/data-structures/base/iterable-base.ts +172 -19
- package/src/data-structures/binary-tree/avl-tree.ts +97 -97
- package/src/data-structures/binary-tree/binary-tree.ts +674 -671
- package/src/data-structures/binary-tree/bst.ts +89 -131
- package/src/data-structures/binary-tree/rb-tree.ts +127 -155
- package/src/data-structures/binary-tree/tree-multimap.ts +96 -112
- package/src/data-structures/graph/abstract-graph.ts +4 -0
- package/src/data-structures/graph/directed-graph.ts +30 -0
- package/src/data-structures/graph/map-graph.ts +15 -0
- package/src/data-structures/graph/undirected-graph.ts +28 -0
- package/src/data-structures/hash/hash-map.ts +175 -34
- package/src/data-structures/heap/heap.ts +66 -6
- package/src/data-structures/linked-list/doubly-linked-list.ts +72 -66
- package/src/data-structures/linked-list/singly-linked-list.ts +132 -114
- package/src/data-structures/linked-list/skip-linked-list.ts +63 -37
- package/src/data-structures/matrix/matrix.ts +52 -12
- package/src/data-structures/queue/deque.ts +108 -49
- package/src/data-structures/queue/queue.ts +51 -5
- package/src/data-structures/stack/stack.ts +24 -0
- package/src/data-structures/trie/trie.ts +45 -1
- package/src/types/data-structures/binary-tree/binary-tree.ts +1 -1
- package/src/types/data-structures/hash/hash-map.ts +4 -3
- package/src/types/utils/utils.ts +2 -0
- package/test/performance/data-structures/graph/directed-graph.test.ts +3 -3
- package/test/performance/data-structures/queue/deque.test.ts +26 -25
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +37 -0
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +46 -17
- package/test/unit/data-structures/binary-tree/bst.test.ts +65 -1
- package/test/unit/data-structures/binary-tree/rb-tree.test.ts +38 -1
- package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +37 -32
- package/test/unit/data-structures/graph/abstract-graph.test.ts +8 -0
- package/test/unit/data-structures/graph/directed-graph.test.ts +249 -0
- package/test/unit/data-structures/hash/hash-map.test.ts +376 -353
- package/test/unit/data-structures/heap/heap.test.ts +18 -1
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +24 -5
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +20 -2
- package/test/unit/data-structures/linked-list/skip-list.test.ts +1 -1
- package/test/unit/data-structures/queue/deque.test.ts +65 -5
- package/test/unit/data-structures/queue/queue.test.ts +22 -5
- package/test/unit/data-structures/stack/stack.test.ts +17 -0
- package/test/unit/data-structures/trie/trie.test.ts +17 -0
|
@@ -28,7 +28,7 @@ class RedBlackTree extends bst_1.BST {
|
|
|
28
28
|
/**
|
|
29
29
|
* This is the constructor function for a Red-Black Tree data structure in TypeScript, which
|
|
30
30
|
* initializes the tree with optional nodes and options.
|
|
31
|
-
* @param [keysOrNodesOrEntries] - The `keysOrNodesOrEntries` parameter is an optional iterable of `KeyOrNodeOrEntry<K, V,
|
|
31
|
+
* @param [keysOrNodesOrEntries] - The `keysOrNodesOrEntries` parameter is an optional iterable of `KeyOrNodeOrEntry<K, V, NODE>`
|
|
32
32
|
* objects. It represents the initial nodes that will be added to the RBTree during its
|
|
33
33
|
* construction. If this parameter is provided, the `addMany` method is called to add all the
|
|
34
34
|
* nodes to the
|
|
@@ -76,14 +76,14 @@ class RedBlackTree extends bst_1.BST {
|
|
|
76
76
|
return new RedBlackTree([], Object.assign({ iterationType: this.iterationType }, options));
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
|
-
* The function `
|
|
80
|
-
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V,
|
|
79
|
+
* The function `keyValueOrEntryToNode` takes an keyOrNodeOrEntry and converts it into a node object if possible.
|
|
80
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V, NODE>`, where:
|
|
81
81
|
* @param {V} [value] - The `value` parameter is an optional value that can be passed to the
|
|
82
|
-
* `
|
|
82
|
+
* `keyValueOrEntryToNode` function. It represents the value associated with the keyOrNodeOrEntry node. If a value
|
|
83
83
|
* is provided, it will be used when creating the new node. If no value is provided, the new node
|
|
84
|
-
* @returns a node of type
|
|
84
|
+
* @returns a node of type NODE or undefined.
|
|
85
85
|
*/
|
|
86
|
-
|
|
86
|
+
keyValueOrEntryToNode(keyOrNodeOrEntry, value) {
|
|
87
87
|
let node;
|
|
88
88
|
if (keyOrNodeOrEntry === null || keyOrNodeOrEntry === undefined) {
|
|
89
89
|
return;
|
|
@@ -110,17 +110,13 @@ class RedBlackTree extends bst_1.BST {
|
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* The function checks if an keyOrNodeOrEntry is an instance of the RedBlackTreeNode class.
|
|
113
|
-
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V,
|
|
113
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V, NODE>`.
|
|
114
114
|
* @returns a boolean value indicating whether the keyOrNodeOrEntry is an instance of the RedBlackTreeNode
|
|
115
115
|
* class.
|
|
116
116
|
*/
|
|
117
117
|
isNode(keyOrNodeOrEntry) {
|
|
118
118
|
return keyOrNodeOrEntry instanceof RedBlackTreeNode;
|
|
119
119
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Time Complexity: O(log n) on average (where n is the number of nodes in the tree)
|
|
122
|
-
* Space Complexity: O(1)
|
|
123
|
-
*/
|
|
124
120
|
isRealNode(node) {
|
|
125
121
|
if (node === this.Sentinel || node === undefined)
|
|
126
122
|
return false;
|
|
@@ -129,7 +125,7 @@ class RedBlackTree extends bst_1.BST {
|
|
|
129
125
|
/**
|
|
130
126
|
* Time Complexity: O(log n)
|
|
131
127
|
* Space Complexity: O(1)
|
|
132
|
-
*
|
|
128
|
+
* On average (where n is the number of nodes in the tree)
|
|
133
129
|
*/
|
|
134
130
|
/**
|
|
135
131
|
* Time Complexity: O(log n)
|
|
@@ -141,10 +137,10 @@ class RedBlackTree extends bst_1.BST {
|
|
|
141
137
|
* entry.
|
|
142
138
|
* @param {V} [value] - The `value` parameter represents the value associated with the key that is
|
|
143
139
|
* being added to the binary search tree.
|
|
144
|
-
* @returns The method `add` returns either the newly added node (`
|
|
140
|
+
* @returns The method `add` returns either the newly added node (`NODE`) or `undefined`.
|
|
145
141
|
*/
|
|
146
142
|
add(keyOrNodeOrEntry, value) {
|
|
147
|
-
const newNode = this.
|
|
143
|
+
const newNode = this.keyValueOrEntryToNode(keyOrNodeOrEntry, value);
|
|
148
144
|
if (newNode === undefined)
|
|
149
145
|
return false;
|
|
150
146
|
newNode.left = this.Sentinel;
|
|
@@ -194,7 +190,6 @@ class RedBlackTree extends bst_1.BST {
|
|
|
194
190
|
/**
|
|
195
191
|
* Time Complexity: O(log n)
|
|
196
192
|
* Space Complexity: O(1)
|
|
197
|
-
* on average (where n is the number of nodes in the tree)
|
|
198
193
|
*/
|
|
199
194
|
/**
|
|
200
195
|
* Time Complexity: O(log n)
|
|
@@ -206,10 +201,10 @@ class RedBlackTree extends bst_1.BST {
|
|
|
206
201
|
* that you want to use to identify the node that you want to delete from the binary tree. It can be
|
|
207
202
|
* of any type that is returned by the callback function `C`. It can also be `null` or `undefined` if
|
|
208
203
|
* you don't want to
|
|
209
|
-
* @param {C} callback - The `callback` parameter is a function that takes a node of type `
|
|
204
|
+
* @param {C} callback - The `callback` parameter is a function that takes a node of type `NODE` and
|
|
210
205
|
* returns a value of type `ReturnType<C>`. It is used to determine if a node should be deleted based
|
|
211
206
|
* on its identifier. The `callback` function is optional and defaults to `this._defaultOneParam
|
|
212
|
-
* @returns an array of `BinaryTreeDeleteResult<
|
|
207
|
+
* @returns an array of `BinaryTreeDeleteResult<NODE>`.
|
|
213
208
|
*/
|
|
214
209
|
delete(identifier, callback = this._defaultOneParamCallback) {
|
|
215
210
|
const ans = [];
|
|
@@ -285,14 +280,14 @@ class RedBlackTree extends bst_1.BST {
|
|
|
285
280
|
* node that matches the other criteria
|
|
286
281
|
* @param {C} callback - The `callback` parameter is a function that will be called for each node in
|
|
287
282
|
* the binary tree. It is used to determine if a node matches the given identifier. The `callback`
|
|
288
|
-
* function should take a single parameter of type `
|
|
289
|
-
* @param {K |
|
|
283
|
+
* function should take a single parameter of type `NODE` (the type of the nodes in the binary tree) and
|
|
284
|
+
* @param {K | NODE | undefined} beginRoot - The `beginRoot` parameter is the starting point for
|
|
290
285
|
* searching for a node in a binary tree. It can be either a key value or a node object. If it is not
|
|
291
286
|
* provided, the search will start from the root of the binary tree.
|
|
292
287
|
* @param iterationType - The `iterationType` parameter is a variable that determines the type of
|
|
293
288
|
* iteration to be performed when searching for nodes in the binary tree. It is used in the
|
|
294
289
|
* `getNodes` method, which is called within the `getNode` method.
|
|
295
|
-
* @returns a value of type `
|
|
290
|
+
* @returns a value of type `NODE`, `null`, or `undefined`.
|
|
296
291
|
*/
|
|
297
292
|
getNode(identifier, callback = this._defaultOneParamCallback, beginRoot = this.root, iterationType = this.iterationType) {
|
|
298
293
|
var _a;
|
|
@@ -301,6 +296,14 @@ class RedBlackTree extends bst_1.BST {
|
|
|
301
296
|
beginRoot = this.ensureNode(beginRoot);
|
|
302
297
|
return (_a = this.getNodes(identifier, callback, true, beginRoot, iterationType)[0]) !== null && _a !== void 0 ? _a : undefined;
|
|
303
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Time Complexity: O(1)
|
|
301
|
+
* Space Complexity: O(1)
|
|
302
|
+
*/
|
|
303
|
+
clear() {
|
|
304
|
+
this._root = this.Sentinel;
|
|
305
|
+
this._size = 0;
|
|
306
|
+
}
|
|
304
307
|
/**
|
|
305
308
|
* Time Complexity: O(log n)
|
|
306
309
|
* Space Complexity: O(1)
|
|
@@ -325,14 +328,6 @@ class RedBlackTree extends bst_1.BST {
|
|
|
325
328
|
}
|
|
326
329
|
return y;
|
|
327
330
|
}
|
|
328
|
-
/**
|
|
329
|
-
* Time Complexity: O(1)
|
|
330
|
-
* Space Complexity: O(1)
|
|
331
|
-
*/
|
|
332
|
-
clear() {
|
|
333
|
-
this._root = this.Sentinel;
|
|
334
|
-
this._size = 0;
|
|
335
|
-
}
|
|
336
331
|
_setRoot(v) {
|
|
337
332
|
if (v) {
|
|
338
333
|
v.parent = undefined;
|
|
@@ -348,7 +343,7 @@ class RedBlackTree extends bst_1.BST {
|
|
|
348
343
|
* Space Complexity: O(1)
|
|
349
344
|
*
|
|
350
345
|
* The function performs a left rotation on a binary tree node.
|
|
351
|
-
* @param {RedBlackTreeNode} x - The parameter `x` is of type `
|
|
346
|
+
* @param {RedBlackTreeNode} x - The parameter `x` is of type `NODE`, which likely represents a node in a binary tree.
|
|
352
347
|
*/
|
|
353
348
|
_leftRotate(x) {
|
|
354
349
|
if (x.right) {
|
|
@@ -406,6 +401,63 @@ class RedBlackTree extends bst_1.BST {
|
|
|
406
401
|
x.parent = y;
|
|
407
402
|
}
|
|
408
403
|
}
|
|
404
|
+
/**
|
|
405
|
+
* Time Complexity: O(log n)
|
|
406
|
+
* Space Complexity: O(1)
|
|
407
|
+
*/
|
|
408
|
+
/**
|
|
409
|
+
* Time Complexity: O(log n)
|
|
410
|
+
* Space Complexity: O(1)
|
|
411
|
+
*
|
|
412
|
+
* The `_fixInsert` function is used to fix the red-black tree after an insertion operation.
|
|
413
|
+
* @param {RedBlackTreeNode} k - The parameter `k` is a RedBlackTreeNode object, which represents a node in a
|
|
414
|
+
* red-black tree.
|
|
415
|
+
*/
|
|
416
|
+
_fixInsert(k) {
|
|
417
|
+
let u;
|
|
418
|
+
while (k.parent && k.parent.color === 1) {
|
|
419
|
+
if (k.parent.parent && k.parent === k.parent.parent.right) {
|
|
420
|
+
u = k.parent.parent.left;
|
|
421
|
+
if (u && u.color === 1) {
|
|
422
|
+
u.color = types_1.RBTNColor.BLACK;
|
|
423
|
+
k.parent.color = types_1.RBTNColor.BLACK;
|
|
424
|
+
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
425
|
+
k = k.parent.parent;
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
if (k === k.parent.left) {
|
|
429
|
+
k = k.parent;
|
|
430
|
+
this._rightRotate(k);
|
|
431
|
+
}
|
|
432
|
+
k.parent.color = types_1.RBTNColor.BLACK;
|
|
433
|
+
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
434
|
+
this._leftRotate(k.parent.parent);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
u = k.parent.parent.right;
|
|
439
|
+
if (u && u.color === 1) {
|
|
440
|
+
u.color = types_1.RBTNColor.BLACK;
|
|
441
|
+
k.parent.color = types_1.RBTNColor.BLACK;
|
|
442
|
+
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
443
|
+
k = k.parent.parent;
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
if (k === k.parent.right) {
|
|
447
|
+
k = k.parent;
|
|
448
|
+
this._leftRotate(k);
|
|
449
|
+
}
|
|
450
|
+
k.parent.color = types_1.RBTNColor.BLACK;
|
|
451
|
+
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
452
|
+
this._rightRotate(k.parent.parent);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
if (k === this.root) {
|
|
456
|
+
break;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
this.root.color = types_1.RBTNColor.BLACK;
|
|
460
|
+
}
|
|
409
461
|
/**
|
|
410
462
|
* Time Complexity: O(log n)
|
|
411
463
|
* Space Complexity: O(1)
|
|
@@ -505,68 +557,11 @@ class RedBlackTree extends bst_1.BST {
|
|
|
505
557
|
}
|
|
506
558
|
v.parent = u.parent;
|
|
507
559
|
}
|
|
508
|
-
/**
|
|
509
|
-
* Time Complexity: O(log n)
|
|
510
|
-
* Space Complexity: O(1)
|
|
511
|
-
*/
|
|
512
|
-
/**
|
|
513
|
-
* Time Complexity: O(log n)
|
|
514
|
-
* Space Complexity: O(1)
|
|
515
|
-
*
|
|
516
|
-
* The `_fixInsert` function is used to fix the red-black tree after an insertion operation.
|
|
517
|
-
* @param {RedBlackTreeNode} k - The parameter `k` is a RedBlackTreeNode object, which represents a node in a
|
|
518
|
-
* red-black tree.
|
|
519
|
-
*/
|
|
520
|
-
_fixInsert(k) {
|
|
521
|
-
let u;
|
|
522
|
-
while (k.parent && k.parent.color === 1) {
|
|
523
|
-
if (k.parent.parent && k.parent === k.parent.parent.right) {
|
|
524
|
-
u = k.parent.parent.left;
|
|
525
|
-
if (u && u.color === 1) {
|
|
526
|
-
u.color = types_1.RBTNColor.BLACK;
|
|
527
|
-
k.parent.color = types_1.RBTNColor.BLACK;
|
|
528
|
-
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
529
|
-
k = k.parent.parent;
|
|
530
|
-
}
|
|
531
|
-
else {
|
|
532
|
-
if (k === k.parent.left) {
|
|
533
|
-
k = k.parent;
|
|
534
|
-
this._rightRotate(k);
|
|
535
|
-
}
|
|
536
|
-
k.parent.color = types_1.RBTNColor.BLACK;
|
|
537
|
-
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
538
|
-
this._leftRotate(k.parent.parent);
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
else {
|
|
542
|
-
u = k.parent.parent.right;
|
|
543
|
-
if (u && u.color === 1) {
|
|
544
|
-
u.color = types_1.RBTNColor.BLACK;
|
|
545
|
-
k.parent.color = types_1.RBTNColor.BLACK;
|
|
546
|
-
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
547
|
-
k = k.parent.parent;
|
|
548
|
-
}
|
|
549
|
-
else {
|
|
550
|
-
if (k === k.parent.right) {
|
|
551
|
-
k = k.parent;
|
|
552
|
-
this._leftRotate(k);
|
|
553
|
-
}
|
|
554
|
-
k.parent.color = types_1.RBTNColor.BLACK;
|
|
555
|
-
k.parent.parent.color = types_1.RBTNColor.RED;
|
|
556
|
-
this._rightRotate(k.parent.parent);
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
if (k === this.root) {
|
|
560
|
-
break;
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
this.root.color = types_1.RBTNColor.BLACK;
|
|
564
|
-
}
|
|
565
560
|
/**
|
|
566
561
|
* The function replaces an old node with a new node while preserving the color of the old node.
|
|
567
|
-
* @param {
|
|
568
|
-
* data structure. It is of type `
|
|
569
|
-
* @param {
|
|
562
|
+
* @param {NODE} oldNode - The `oldNode` parameter represents the node that needs to be replaced in a
|
|
563
|
+
* data structure. It is of type `NODE`, which is the type of the nodes in the data structure.
|
|
564
|
+
* @param {NODE} newNode - The `newNode` parameter is the node that will replace the `oldNode` in the
|
|
570
565
|
* data structure.
|
|
571
566
|
* @returns The method is returning the result of calling the `_replaceNode` method from the
|
|
572
567
|
* superclass, passing in the `oldNode` and `newNode` as arguments.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rb-tree.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/rb-tree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rb-tree.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/rb-tree.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,uCASqB;AACrB,+BAAqC;AAGrC,MAAa,gBAIX,SAAQ,aAAmB;IAG3B,YAAY,GAAM,EAAE,KAAS,EAAE,QAAmB,iBAAS,CAAC,KAAK;QAC/D,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAXD,4CAWC;AAED;;;;;;GAMG;AACH,MAAa,YAMX,SAAQ,SAAqB;IAI7B;;;;;;;;;;OAUG;IACH,YAAY,uBAA+D,EAAE,EAAE,OAA0B;QACvG,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAdrB,aAAQ,GAAS,IAAI,gBAAgB,CAAO,GAAQ,CAAoB,CAAC;QA0B/D,UAAK,GAAW,CAAC,CAAC;QAV1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,oBAAoB;YAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAChE,CAAC;IAID,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAID,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;OAWG;IACM,UAAU,CAAC,GAAM,EAAE,KAAS,EAAE,QAAmB,iBAAS,CAAC,KAAK;QACvE,OAAO,IAAI,gBAAgB,CAAa,GAAG,EAAE,KAAK,EAAE,KAAK,CAAS,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACM,UAAU,CAAC,OAA0B;QAC5C,OAAO,IAAI,YAAY,CAAmB,EAAE,kBAC1C,aAAa,EAAE,IAAI,CAAC,aAAa,IAC9B,OAAO,EACF,CAAC;IACb,CAAC;IAED;;;;;;;OAOG;IACM,qBAAqB,CAAC,gBAA8C,EAAE,KAAS;QACtF,IAAI,IAAsB,CAAC;QAE3B,IAAI,gBAAgB,KAAK,IAAI,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAChE,OAAO;QACT,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACzC,IAAI,GAAG,gBAAgB,CAAC;QAC1B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC;YACtC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACtC,OAAO;YACT,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,iBAAS,CAAC,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,KAAK,EAAE,iBAAS,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,OAAO;QACT,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACM,MAAM,CAAC,gBAA8C;QAC5D,OAAO,gBAAgB,YAAY,gBAAgB,CAAC;IACtD,CAAC;IAEQ,UAAU,CAAC,IAAsB;QACxC,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC/D,OAAO,IAAI,YAAY,gBAAgB,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IAEH;;;;;;;;;;;OAWG;IACM,GAAG,CAAC,gBAA8C,EAAE,KAAS;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAExC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,IAAI,CAAC,GAAqB,SAAS,CAAC;QACpC,IAAI,CAAC,GAAqB,IAAI,CAAC,IAAI,CAAC;QAEpC,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACb,CAAC;qBAAM,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC/B,CAAC,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;wBAClB,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBAChC,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC/B,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;QACpB,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IAEH;;;;;;;;;;;;;;OAcG;IACH,MAAM,CACJ,UAA4C,EAC5C,WAAc,IAAI,CAAC,wBAA6B;QAEhD,MAAM,GAAG,GAAmC,EAAE,CAAC;QAC/C,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,IAAsB,EAAQ,EAAE;YAC9C,IAAI,CAAC,GAAS,IAAI,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAmB,EAAE,CAAO,CAAC;YACjC,OAAO,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;oBAC1C,CAAC,GAAG,IAAI,CAAC;gBACX,CAAC;gBAED,IAAI,IAAI,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC;gBACpB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAED,CAAC,GAAG,CAAC,CAAC;YACN,IAAI,cAAc,GAAW,CAAC,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBACZ,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAM,CAAC,CAAC;YAClC,CAAC;iBAAM,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACX,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,IAAK,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC;gBAC/B,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;gBACzB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;gBACZ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnB,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,KAAM,CAAC,CAAC;oBAChC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;oBAClB,CAAC,CAAC,KAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,CAAC;gBAED,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gBAChB,CAAC,CAAC,IAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACnB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,IAAI,cAAc,KAAK,iBAAS,CAAC,KAAK,EAAE,CAAC;gBACvC,IAAI,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IAEH;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CACL,UAAqC,EACrC,WAAc,IAAI,CAAC,wBAA6B,EAChD,YAAoC,IAAI,CAAC,IAAI,EAC7C,aAAa,GAAG,IAAI,CAAC,aAAa;;QAElC,IAAK,UAAkB,YAAY,gBAAgB;YAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAM,CAAC;QACpF,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,mCAAI,SAAS,CAAC;IAC7F,CAAC;IAED;;;OAGG;IAEM,KAAK;QACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IAEH;;;;;;;;OAQG;IACM,cAAc,CAAC,CAAO;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,GAAqB,CAAC,CAAC,MAAM,CAAC;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,CAAC,GAAG,CAAE,CAAC;YACP,CAAC,GAAG,CAAE,CAAC,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAE,CAAC;IACZ,CAAC;IAEkB,QAAQ,CAAC,CAAO;QACjC,IAAI,CAAC,EAAE,CAAC;YACN,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAED;;;OAGG;IAEH;;;;;;OAMG;IACO,WAAW,CAAC,CAAO;QAC3B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,CAAC,GAAS,CAAC,CAAC,KAAK,CAAC;YACxB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC7B,IAAI,CAAC,CAAC,IAAI;oBAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChC,CAAC;YACD,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YACX,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IAEH;;;;;;;OAOG;IACO,YAAY,CAAC,CAAO;QAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,CAAC,GAAS,CAAC,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;YACjB,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC,CAAC,KAAK;oBAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,CAAC;YACD,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACpB,CAAC;YACD,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YACZ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IAEH;;;;;;;OAOG;IACO,UAAU,CAAC,CAAO;QAC1B,IAAI,CAAmB,CAAC;QACxB,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC1D,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACvB,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBACtC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;wBACxB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;wBACb,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;oBAED,CAAC,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAClC,CAAC,CAAC,MAAO,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBACxC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAO,CAAC,MAAO,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,KAAK,CAAC;gBAE3B,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACvB,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBACjC,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBACvC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAO,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;wBACzB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;wBACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBACtB,CAAC;oBAED,CAAC,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAClC,CAAC,CAAC,MAAO,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBACxC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAO,CAAC,MAAO,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;OAGG;IAEH;;;;;;OAMG;IACO,UAAU,CAAC,CAAO;QAC1B,IAAI,CAAmB,CAAC;QACxB,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,EAAE,CAAC;YACtD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAM,CAAC;gBACpB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBAClB,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAC1B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBAC/B,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC3B,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAM,CAAC;gBACtB,CAAC;gBAED,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,EAAE,CAAC;oBAC7G,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBACxB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,EAAE,CAAC;wBACjD,IAAI,CAAC,CAAC,IAAI;4BAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBAC3C,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;wBACxB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;wBACrB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBACrB,CAAC;oBAED,IAAI,CAAC;wBAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAChC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBACjC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK;wBAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC3B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC,IAAK,CAAC;gBACpB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBAClB,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAC1B,CAAC,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBAChC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAO,CAAC,CAAC;oBAC7B,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC,IAAI,CAAC;gBACrB,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,EAAE,CAAC;oBAC3F,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;oBACxB,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,iBAAS,CAAC,KAAK,EAAE,CAAC;wBACpD,IAAI,CAAC,CAAC,KAAK;4BAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;wBAC7C,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,GAAG,CAAC;wBACxB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBACpB,CAAC,GAAG,CAAC,CAAC,MAAO,CAAC,IAAI,CAAC;oBACrB,CAAC;oBAED,IAAI,CAAC;wBAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAO,CAAC,KAAK,CAAC;oBACjC,CAAC,CAAC,MAAO,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI;wBAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;oBAChD,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAO,CAAC,CAAC;oBAC7B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QACD,CAAC,CAAC,KAAK,GAAG,iBAAS,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED;;;OAGG;IAEH;;;;;;;OAOG;IACO,aAAa,CAAC,CAAO,EAAE,CAAO;QACtC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,CAAC;IAED;;;;;;;;OAQG;IACO,YAAY,CAAC,OAAa,EAAE,OAAa;QACjD,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE9B,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF;AArkBD,oCAqkBC"}
|
|
@@ -9,7 +9,7 @@ import type { BinaryTreeDeleteResult, BSTNKeyOrNode, BTNCallback, KeyOrNodeOrEnt
|
|
|
9
9
|
import { IterationType } from '../../types';
|
|
10
10
|
import { IBinaryTree } from '../../interfaces';
|
|
11
11
|
import { AVLTree, AVLTreeNode } from './avl-tree';
|
|
12
|
-
export declare class TreeMultimapNode<K = any, V = any,
|
|
12
|
+
export declare class TreeMultimapNode<K = any, V = any, NODE extends TreeMultimapNode<K, V, NODE> = TreeMultimapNodeNested<K, V>> extends AVLTreeNode<K, V, NODE> {
|
|
13
13
|
count: number;
|
|
14
14
|
/**
|
|
15
15
|
* The constructor function initializes a BinaryTreeNode object with a key, value, and count.
|
|
@@ -26,44 +26,43 @@ export declare class TreeMultimapNode<K = any, V = any, N extends TreeMultimapNo
|
|
|
26
26
|
/**
|
|
27
27
|
* 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.
|
|
28
28
|
*/
|
|
29
|
-
export declare class TreeMultimap<K = any, V = any,
|
|
30
|
-
constructor(keysOrNodesOrEntries?: Iterable<KeyOrNodeOrEntry<K, V,
|
|
29
|
+
export declare class TreeMultimap<K = any, V = any, NODE extends TreeMultimapNode<K, V, NODE> = TreeMultimapNode<K, V, TreeMultimapNodeNested<K, V>>, TREE extends TreeMultimap<K, V, NODE, TREE> = TreeMultimap<K, V, NODE, TreeMultimapNested<K, V, NODE>>> extends AVLTree<K, V, NODE, TREE> implements IBinaryTree<K, V, NODE, TREE> {
|
|
30
|
+
constructor(keysOrNodesOrEntries?: Iterable<KeyOrNodeOrEntry<K, V, NODE>>, options?: TreeMultimapOptions<K>);
|
|
31
31
|
private _count;
|
|
32
32
|
get count(): number;
|
|
33
33
|
/**
|
|
34
34
|
* The function creates a new BSTNode with the given key, value, and count.
|
|
35
35
|
* @param {K} key - The key parameter is the unique identifier for the binary tree node. It is used to
|
|
36
36
|
* distinguish one node from another in the tree.
|
|
37
|
-
* @param {
|
|
37
|
+
* @param {NODE} value - The `value` parameter represents the value that will be stored in the binary search tree node.
|
|
38
38
|
* @param {number} [count] - The "count" parameter is an optional parameter of type number. It represents the number of
|
|
39
39
|
* occurrences of the value in the binary search tree node. If not provided, the count will default to 1.
|
|
40
40
|
* @returns A new instance of the BSTNode class with the specified key, value, and count (if provided).
|
|
41
41
|
*/
|
|
42
|
-
createNode(key: K, value?: V, count?: number):
|
|
42
|
+
createNode(key: K, value?: V, count?: number): NODE;
|
|
43
43
|
createTree(options?: TreeMultimapOptions<K>): TREE;
|
|
44
44
|
/**
|
|
45
|
-
* The function `
|
|
46
|
-
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V,
|
|
45
|
+
* The function `keyValueOrEntryToNode` converts an keyOrNodeOrEntry object into a node object.
|
|
46
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V, NODE>`, which means it
|
|
47
47
|
* can be one of the following:
|
|
48
48
|
* @param {V} [value] - The `value` parameter is an optional argument that represents the value
|
|
49
49
|
* associated with the node. It is of type `V`, which can be any data type. If no value is provided,
|
|
50
50
|
* it defaults to `undefined`.
|
|
51
51
|
* @param [count=1] - The `count` parameter is an optional parameter that specifies the number of
|
|
52
52
|
* times the value should be added to the node. If not provided, it defaults to 1.
|
|
53
|
-
* @returns a node of type `
|
|
53
|
+
* @returns a node of type `NODE` or `undefined`.
|
|
54
54
|
*/
|
|
55
|
-
|
|
55
|
+
keyValueOrEntryToNode(keyOrNodeOrEntry: KeyOrNodeOrEntry<K, V, NODE>, value?: V, count?: number): NODE | undefined;
|
|
56
56
|
/**
|
|
57
57
|
* The function checks if an keyOrNodeOrEntry is an instance of the TreeMultimapNode class.
|
|
58
|
-
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V,
|
|
58
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter is of type `KeyOrNodeOrEntry<K, V, NODE>`.
|
|
59
59
|
* @returns a boolean value indicating whether the keyOrNodeOrEntry is an instance of the TreeMultimapNode
|
|
60
60
|
* class.
|
|
61
61
|
*/
|
|
62
|
-
isNode(keyOrNodeOrEntry: KeyOrNodeOrEntry<K, V,
|
|
62
|
+
isNode(keyOrNodeOrEntry: KeyOrNodeOrEntry<K, V, NODE>): keyOrNodeOrEntry is NODE;
|
|
63
63
|
/**
|
|
64
64
|
* Time Complexity: O(log n)
|
|
65
65
|
* Space Complexity: O(1)
|
|
66
|
-
* logarithmic time, where "n" is the number of nodes in the tree. The add method of the superclass (AVLTree) has logarithmic time complexity. constant space, as it doesn't use additional data structures that scale with input size.
|
|
67
66
|
*/
|
|
68
67
|
/**
|
|
69
68
|
* Time Complexity: O(log n)
|
|
@@ -81,47 +80,13 @@ export declare class TreeMultimap<K = any, V = any, N extends TreeMultimapNode<K
|
|
|
81
80
|
* @returns The method is returning either the newly inserted node or `undefined` if the insertion
|
|
82
81
|
* was not successful.
|
|
83
82
|
*/
|
|
84
|
-
add(keyOrNodeOrEntry: KeyOrNodeOrEntry<K, V,
|
|
83
|
+
add(keyOrNodeOrEntry: KeyOrNodeOrEntry<K, V, NODE>, value?: V, count?: number): boolean;
|
|
85
84
|
/**
|
|
86
|
-
* Time Complexity: O(
|
|
87
|
-
* Space Complexity: O(1)
|
|
88
|
-
* logarithmic time, where "n" is the number of nodes in the tree. The add method of the superclass (AVLTree) has logarithmic time complexity. constant space, as it doesn't use additional data structures that scale with input size.
|
|
89
|
-
*/
|
|
90
|
-
/**
|
|
91
|
-
* Time Complexity: O(k log n)
|
|
92
|
-
* Space Complexity: O(1)
|
|
93
|
-
*
|
|
94
|
-
* The function overrides the addMany method to add multiple keys, nodes, or entries to a data
|
|
95
|
-
* structure.
|
|
96
|
-
* @param keysOrNodesOrEntries - The parameter `keysOrNodesOrEntries` is an iterable that can contain
|
|
97
|
-
* either keys, nodes, or entries.
|
|
98
|
-
* @returns The method is returning an array of type `N | undefined`.
|
|
99
|
-
*/
|
|
100
|
-
addMany(keysOrNodesOrEntries: Iterable<KeyOrNodeOrEntry<K, V, N>>): boolean[];
|
|
101
|
-
/**
|
|
102
|
-
* Time Complexity: O(n log n)
|
|
103
|
-
* Space Complexity: O(n)
|
|
104
|
-
* logarithmic time for each insertion, where "n" is the number of nodes in the tree. This is because the method calls the add method for each node. linear space, as it creates an array to store the sorted nodes.
|
|
105
|
-
*/
|
|
106
|
-
/**
|
|
107
|
-
* Time Complexity: O(n log n)
|
|
108
|
-
* Space Complexity: O(n)
|
|
109
|
-
*
|
|
110
|
-
* The `perfectlyBalance` function takes a sorted array of nodes and builds a balanced binary search
|
|
111
|
-
* tree using either a recursive or iterative approach.
|
|
112
|
-
* @param iterationType - The `iterationType` parameter is an optional parameter that specifies the
|
|
113
|
-
* type of iteration to use when building the balanced binary search tree. It can have two possible
|
|
114
|
-
* values:
|
|
115
|
-
* @returns a boolean value.
|
|
116
|
-
*/
|
|
117
|
-
perfectlyBalance(iterationType?: IterationType): boolean;
|
|
118
|
-
/**
|
|
119
|
-
* Time Complexity: O(k log n)
|
|
85
|
+
* Time Complexity: O(log n)
|
|
120
86
|
* Space Complexity: O(1)
|
|
121
|
-
* logarithmic time for each insertion, where "n" is the number of nodes in the tree, and "k" is the number of keys to be inserted. This is because the method iterates through the keys and calls the add method for each. constant space, as it doesn't use additional data structures that scale with input size.
|
|
122
87
|
*/
|
|
123
88
|
/**
|
|
124
|
-
* Time Complexity: O(
|
|
89
|
+
* Time Complexity: O(log n)
|
|
125
90
|
* Space Complexity: O(1)
|
|
126
91
|
*
|
|
127
92
|
* The `delete` function in TypeScript is used to remove a node from a binary tree, taking into
|
|
@@ -137,9 +102,9 @@ export declare class TreeMultimap<K = any, V = any, N extends TreeMultimapNode<K
|
|
|
137
102
|
* being deleted. If set to true, the count of the node will not be considered and the node will be
|
|
138
103
|
* deleted regardless of its count. If set to false (default), the count of the node will be
|
|
139
104
|
* decremented by 1 and
|
|
140
|
-
* @returns an array of `BinaryTreeDeleteResult<
|
|
105
|
+
* @returns an array of `BinaryTreeDeleteResult<NODE>`.
|
|
141
106
|
*/
|
|
142
|
-
delete<C extends BTNCallback<
|
|
107
|
+
delete<C extends BTNCallback<NODE>>(identifier: ReturnType<C>, callback?: C, ignoreCount?: boolean): BinaryTreeDeleteResult<NODE>[];
|
|
143
108
|
/**
|
|
144
109
|
* Time Complexity: O(1)
|
|
145
110
|
* Space Complexity: O(1)
|
|
@@ -151,6 +116,22 @@ export declare class TreeMultimap<K = any, V = any, N extends TreeMultimapNode<K
|
|
|
151
116
|
* The clear() function clears the contents of a data structure and sets the count to zero.
|
|
152
117
|
*/
|
|
153
118
|
clear(): void;
|
|
119
|
+
/**
|
|
120
|
+
* Time Complexity: O(n log n)
|
|
121
|
+
* Space Complexity: O(log n)
|
|
122
|
+
*/
|
|
123
|
+
/**
|
|
124
|
+
* Time Complexity: O(n log n)
|
|
125
|
+
* Space Complexity: O(log n)
|
|
126
|
+
*
|
|
127
|
+
* The `perfectlyBalance` function takes a sorted array of nodes and builds a balanced binary search
|
|
128
|
+
* tree using either a recursive or iterative approach.
|
|
129
|
+
* @param iterationType - The `iterationType` parameter is an optional parameter that specifies the
|
|
130
|
+
* type of iteration to use when building the balanced binary search tree. It can have two possible
|
|
131
|
+
* values:
|
|
132
|
+
* @returns a boolean value.
|
|
133
|
+
*/
|
|
134
|
+
perfectlyBalance(iterationType?: IterationType): boolean;
|
|
154
135
|
/**
|
|
155
136
|
* Time complexity: O(n)
|
|
156
137
|
* Space complexity: O(n)
|
|
@@ -165,13 +146,13 @@ export declare class TreeMultimap<K = any, V = any, N extends TreeMultimapNode<K
|
|
|
165
146
|
clone(): TREE;
|
|
166
147
|
/**
|
|
167
148
|
* The `_swapProperties` function swaps the key, value, count, and height properties between two nodes.
|
|
168
|
-
* @param {K |
|
|
169
|
-
* which the values will be swapped. It can be of type `K`, `
|
|
170
|
-
* @param {K |
|
|
149
|
+
* @param {K | NODE | undefined} srcNode - The `srcNode` parameter represents the source node from
|
|
150
|
+
* which the values will be swapped. It can be of type `K`, `NODE`, or `undefined`.
|
|
151
|
+
* @param {K | NODE | undefined} destNode - The `destNode` parameter represents the destination
|
|
171
152
|
* node where the values from the source node will be swapped to.
|
|
172
153
|
* @returns either the `destNode` object if both `srcNode` and `destNode` are defined, or `undefined`
|
|
173
154
|
* if either `srcNode` or `destNode` is undefined.
|
|
174
155
|
*/
|
|
175
|
-
protected _swapProperties(srcNode: BSTNKeyOrNode<K,
|
|
176
|
-
protected _replaceNode(oldNode:
|
|
156
|
+
protected _swapProperties(srcNode: BSTNKeyOrNode<K, NODE>, destNode: BSTNKeyOrNode<K, NODE>): NODE | undefined;
|
|
157
|
+
protected _replaceNode(oldNode: NODE, newNode: NODE): NODE;
|
|
177
158
|
}
|