data-structure-typed 1.52.7 → 1.52.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/CHANGELOG.md +1 -1
- package/README.md +13 -13
- package/benchmark/report.html +13 -13
- package/benchmark/report.json +146 -146
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +4 -4
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +4 -4
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +3 -3
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +3 -3
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +62 -5
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +26 -11
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.js +9 -14
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +3 -3
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +8 -6
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +4 -5
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +9 -8
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +4 -4
- package/dist/mjs/data-structures/binary-tree/avl-tree-multi-map.js +4 -4
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +3 -3
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +3 -3
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +62 -5
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +26 -11
- package/dist/mjs/data-structures/binary-tree/bst.js +9 -14
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +3 -3
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +8 -6
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.d.ts +4 -5
- package/dist/mjs/data-structures/binary-tree/tree-multi-map.js +9 -8
- package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -1
- package/dist/umd/data-structure-typed.js +58 -45
- package/dist/umd/data-structure-typed.min.js +5 -5
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +6 -6
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +4 -5
- package/src/data-structures/binary-tree/avl-tree.ts +3 -4
- package/src/data-structures/binary-tree/binary-tree.ts +26 -30
- package/src/data-structures/binary-tree/bst.ts +16 -19
- package/src/data-structures/binary-tree/rb-tree.ts +8 -6
- package/src/data-structures/binary-tree/tree-multi-map.ts +9 -8
- package/src/types/data-structures/binary-tree/binary-tree.ts +1 -1
- package/test/integration/bst.test.ts +2 -2
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +20 -0
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +37 -17
- package/test/unit/data-structures/binary-tree/bst.test.ts +11 -6
|
@@ -184,7 +184,7 @@ class RedBlackTree extends bst_1.BST {
|
|
|
184
184
|
*
|
|
185
185
|
* The function overrides the delete method in a binary tree data structure to remove a node based on
|
|
186
186
|
* a given predicate and maintain the binary search tree properties.
|
|
187
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
187
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `keyOrNodeOrEntryOrRaw`
|
|
188
188
|
* parameter in the `override delete` method is used to specify the condition or key based on which a
|
|
189
189
|
* node should be deleted from the binary tree. It can be a key, a node, an entry, or a predicate
|
|
190
190
|
* function that determines which node(s) should be deleted.
|
|
@@ -192,15 +192,17 @@ class RedBlackTree extends bst_1.BST {
|
|
|
192
192
|
* objects. Each object in the array contains information about the deleted node and whether
|
|
193
193
|
* balancing is needed.
|
|
194
194
|
*/
|
|
195
|
-
delete(
|
|
196
|
-
if (
|
|
195
|
+
delete(keyOrNodeOrEntryOrRaw) {
|
|
196
|
+
if (keyOrNodeOrEntryOrRaw === null)
|
|
197
197
|
return [];
|
|
198
198
|
const results = [];
|
|
199
199
|
let nodeToDelete;
|
|
200
|
-
if (this._isPredicated(
|
|
201
|
-
nodeToDelete = this.getNode(
|
|
200
|
+
if (this._isPredicated(keyOrNodeOrEntryOrRaw))
|
|
201
|
+
nodeToDelete = this.getNode(keyOrNodeOrEntryOrRaw);
|
|
202
202
|
else
|
|
203
|
-
nodeToDelete = this.isRealNode(
|
|
203
|
+
nodeToDelete = this.isRealNode(keyOrNodeOrEntryOrRaw)
|
|
204
|
+
? keyOrNodeOrEntryOrRaw
|
|
205
|
+
: this.getNode(keyOrNodeOrEntryOrRaw);
|
|
204
206
|
if (!nodeToDelete) {
|
|
205
207
|
return results;
|
|
206
208
|
}
|
|
@@ -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":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
|
-
import type { BinaryTreeDeleteResult, BSTNKeyOrNode, BTNKeyOrNodeOrEntry,
|
|
8
|
+
import type { BinaryTreeDeleteResult, BSTNKeyOrNode, BTNKeyOrNodeOrEntry, IterationType, RBTNColor, TreeMultiMapNested, TreeMultiMapNodeNested, TreeMultiMapOptions, BTNEntry } from '../../types';
|
|
9
9
|
import { IBinaryTree } from '../../interfaces';
|
|
10
10
|
import { RedBlackTree, RedBlackTreeNode } from './rb-tree';
|
|
11
11
|
export declare class TreeMultiMapNode<K = any, V = any, NODE extends TreeMultiMapNode<K, V, NODE> = TreeMultiMapNodeNested<K, V>> extends RedBlackTreeNode<K, V, NODE> {
|
|
@@ -128,17 +128,16 @@ export declare class TreeMultiMap<K = any, V = any, R = BTNEntry<K, V>, NODE ext
|
|
|
128
128
|
*
|
|
129
129
|
* The function `delete` in TypeScript overrides the deletion operation in a binary tree data
|
|
130
130
|
* structure, handling cases where nodes have children and maintaining balance in the tree.
|
|
131
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
131
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `predicate`
|
|
132
132
|
* parameter in the `delete` method is used to specify the condition or key based on which a node
|
|
133
|
-
* should be deleted from the binary tree. It can be a key, a node, an entry
|
|
134
|
-
* function.
|
|
133
|
+
* should be deleted from the binary tree. It can be a key, a node, or an entry.
|
|
135
134
|
* @param [ignoreCount=false] - The `ignoreCount` parameter in the `override delete` method is a
|
|
136
135
|
* boolean flag that determines whether to ignore the count of nodes when performing deletion. If
|
|
137
136
|
* `ignoreCount` is set to `true`, the method will delete the node regardless of its count. If
|
|
138
137
|
* `ignoreCount` is `false
|
|
139
138
|
* @returns The `override delete` method returns an array of `BinaryTreeDeleteResult<NODE>` objects.
|
|
140
139
|
*/
|
|
141
|
-
delete(
|
|
140
|
+
delete(keyOrNodeOrEntryOrRaw: BTNKeyOrNodeOrEntry<K, V, NODE> | R, ignoreCount?: boolean): BinaryTreeDeleteResult<NODE>[];
|
|
142
141
|
/**
|
|
143
142
|
* Time Complexity: O(1)
|
|
144
143
|
* Space Complexity: O(1)
|
|
@@ -178,25 +178,26 @@ class TreeMultiMap extends rb_tree_1.RedBlackTree {
|
|
|
178
178
|
*
|
|
179
179
|
* The function `delete` in TypeScript overrides the deletion operation in a binary tree data
|
|
180
180
|
* structure, handling cases where nodes have children and maintaining balance in the tree.
|
|
181
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
181
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `predicate`
|
|
182
182
|
* parameter in the `delete` method is used to specify the condition or key based on which a node
|
|
183
|
-
* should be deleted from the binary tree. It can be a key, a node, an entry
|
|
184
|
-
* function.
|
|
183
|
+
* should be deleted from the binary tree. It can be a key, a node, or an entry.
|
|
185
184
|
* @param [ignoreCount=false] - The `ignoreCount` parameter in the `override delete` method is a
|
|
186
185
|
* boolean flag that determines whether to ignore the count of nodes when performing deletion. If
|
|
187
186
|
* `ignoreCount` is set to `true`, the method will delete the node regardless of its count. If
|
|
188
187
|
* `ignoreCount` is `false
|
|
189
188
|
* @returns The `override delete` method returns an array of `BinaryTreeDeleteResult<NODE>` objects.
|
|
190
189
|
*/
|
|
191
|
-
delete(
|
|
192
|
-
if (
|
|
190
|
+
delete(keyOrNodeOrEntryOrRaw, ignoreCount = false) {
|
|
191
|
+
if (keyOrNodeOrEntryOrRaw === null)
|
|
193
192
|
return [];
|
|
194
193
|
const results = [];
|
|
195
194
|
let nodeToDelete;
|
|
196
|
-
if (this._isPredicated(
|
|
197
|
-
nodeToDelete = this.getNode(
|
|
195
|
+
if (this._isPredicated(keyOrNodeOrEntryOrRaw))
|
|
196
|
+
nodeToDelete = this.getNode(keyOrNodeOrEntryOrRaw);
|
|
198
197
|
else
|
|
199
|
-
nodeToDelete = this.isRealNode(
|
|
198
|
+
nodeToDelete = this.isRealNode(keyOrNodeOrEntryOrRaw)
|
|
199
|
+
? keyOrNodeOrEntryOrRaw
|
|
200
|
+
: this.getNode(keyOrNodeOrEntryOrRaw);
|
|
200
201
|
if (!nodeToDelete) {
|
|
201
202
|
return results;
|
|
202
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-multi-map.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/tree-multi-map.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"tree-multi-map.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/tree-multi-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BinaryTree, BinaryTreeNode } from '../../../data-structures';
|
|
2
2
|
import { IterationType, OptValue } from '../../common';
|
|
3
|
-
import { DFSOperation } from
|
|
3
|
+
import { DFSOperation } from '../../../constants';
|
|
4
4
|
export type BinaryTreeNodeNested<K, V> = BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, BinaryTreeNode<K, V, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
|
|
5
5
|
export type BinaryTreeNested<K, V, R, NODE extends BinaryTreeNode<K, V, NODE>> = BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, BinaryTree<K, V, R, NODE, any>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;
|
|
6
6
|
export type BinaryTreeOptions<K, V, R> = {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
|
-
import type { AVLTreeMultiMapNested, AVLTreeMultiMapNodeNested, AVLTreeMultiMapOptions, BinaryTreeDeleteResult, BSTNKeyOrNode, BTNKeyOrNodeOrEntry,
|
|
8
|
+
import type { AVLTreeMultiMapNested, AVLTreeMultiMapNodeNested, AVLTreeMultiMapOptions, BinaryTreeDeleteResult, BSTNKeyOrNode, BTNKeyOrNodeOrEntry, IterationType, BTNEntry } from '../../types';
|
|
9
9
|
import { IBinaryTree } from '../../interfaces';
|
|
10
10
|
import { AVLTree, AVLTreeNode } from './avl-tree';
|
|
11
11
|
export declare class AVLTreeMultiMapNode<K = any, V = any, NODE extends AVLTreeMultiMapNode<K, V, NODE> = AVLTreeMultiMapNodeNested<K, V>> extends AVLTreeNode<K, V, NODE> {
|
|
@@ -127,9 +127,9 @@ export declare class AVLTreeMultiMap<K = any, V = any, R = BTNEntry<K, V>, NODE
|
|
|
127
127
|
*
|
|
128
128
|
* The function overrides the delete method in a binary tree data structure, handling deletion of
|
|
129
129
|
* nodes and maintaining balance in the tree.
|
|
130
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
130
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `predicate`
|
|
131
131
|
* parameter in the `delete` method is used to specify the condition for deleting a node from the
|
|
132
|
-
* binary tree. It can be a key, node,
|
|
132
|
+
* binary tree. It can be a key, node, or entry that determines which
|
|
133
133
|
* node(s) should be deleted.
|
|
134
134
|
* @param [ignoreCount=false] - The `ignoreCount` parameter in the `override delete` method is a
|
|
135
135
|
* boolean flag that determines whether to ignore the count of the node being deleted. If
|
|
@@ -140,7 +140,7 @@ export declare class AVLTreeMultiMap<K = any, V = any, R = BTNEntry<K, V>, NODE
|
|
|
140
140
|
* method returns an array of `BinaryTreeDeleteResult` objects, each containing information about the
|
|
141
141
|
* deleted node and whether balancing is needed in the tree.
|
|
142
142
|
*/
|
|
143
|
-
delete(
|
|
143
|
+
delete(keyOrNodeOrEntryOrRaw: BTNKeyOrNodeOrEntry<K, V, NODE> | R, ignoreCount?: boolean): BinaryTreeDeleteResult<NODE>[];
|
|
144
144
|
/**
|
|
145
145
|
* Time Complexity: O(1)
|
|
146
146
|
* Space Complexity: O(1)
|
|
@@ -176,9 +176,9 @@ export class AVLTreeMultiMap extends AVLTree {
|
|
|
176
176
|
*
|
|
177
177
|
* The function overrides the delete method in a binary tree data structure, handling deletion of
|
|
178
178
|
* nodes and maintaining balance in the tree.
|
|
179
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
179
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `predicate`
|
|
180
180
|
* parameter in the `delete` method is used to specify the condition for deleting a node from the
|
|
181
|
-
* binary tree. It can be a key, node,
|
|
181
|
+
* binary tree. It can be a key, node, or entry that determines which
|
|
182
182
|
* node(s) should be deleted.
|
|
183
183
|
* @param [ignoreCount=false] - The `ignoreCount` parameter in the `override delete` method is a
|
|
184
184
|
* boolean flag that determines whether to ignore the count of the node being deleted. If
|
|
@@ -189,11 +189,11 @@ export class AVLTreeMultiMap extends AVLTree {
|
|
|
189
189
|
* method returns an array of `BinaryTreeDeleteResult` objects, each containing information about the
|
|
190
190
|
* deleted node and whether balancing is needed in the tree.
|
|
191
191
|
*/
|
|
192
|
-
delete(
|
|
192
|
+
delete(keyOrNodeOrEntryOrRaw, ignoreCount = false) {
|
|
193
193
|
const deletedResult = [];
|
|
194
194
|
if (!this.root)
|
|
195
195
|
return deletedResult;
|
|
196
|
-
const curr = this.getNode(
|
|
196
|
+
const curr = this.getNode(keyOrNodeOrEntryOrRaw) ?? undefined;
|
|
197
197
|
if (!curr)
|
|
198
198
|
return deletedResult;
|
|
199
199
|
const parent = curr?.parent ? curr.parent : undefined;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
8
|
import { BST, BSTNode } from './bst';
|
|
9
|
-
import type { AVLTreeNested, AVLTreeNodeNested, AVLTreeOptions, BinaryTreeDeleteResult, BSTNKeyOrNode, BTNKeyOrNodeOrEntry,
|
|
9
|
+
import type { AVLTreeNested, AVLTreeNodeNested, AVLTreeOptions, BinaryTreeDeleteResult, BSTNKeyOrNode, BTNKeyOrNodeOrEntry, BTNEntry } from '../../types';
|
|
10
10
|
import { IBinaryTree } from '../../interfaces';
|
|
11
11
|
export declare class AVLTreeNode<K = any, V = any, NODE extends AVLTreeNode<K, V, NODE> = AVLTreeNodeNested<K, V>> extends BSTNode<K, V, NODE> {
|
|
12
12
|
/**
|
|
@@ -99,14 +99,14 @@ export declare class AVLTree<K = any, V = any, R = BTNEntry<K, V>, NODE extends
|
|
|
99
99
|
*
|
|
100
100
|
* The function overrides the delete method in a TypeScript class, performs deletion, and then
|
|
101
101
|
* balances the tree if necessary.
|
|
102
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
102
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `keyOrNodeOrEntryOrRaw`
|
|
103
103
|
* parameter in the `override delete` method can be one of the following types:
|
|
104
104
|
* @returns The `delete` method is being overridden in this code snippet. It first calls the `delete`
|
|
105
105
|
* method from the superclass (presumably a parent class) with the provided `predicate`, which could
|
|
106
106
|
* be a key, node, entry, or a custom predicate. The result of this deletion operation is stored in
|
|
107
107
|
* `deletedResults`, which is an array of `BinaryTreeDeleteResult` objects.
|
|
108
108
|
*/
|
|
109
|
-
delete(
|
|
109
|
+
delete(keyOrNodeOrEntryOrRaw: BTNKeyOrNodeOrEntry<K, V, NODE> | R): BinaryTreeDeleteResult<NODE>[];
|
|
110
110
|
/**
|
|
111
111
|
* Time Complexity: O(1)
|
|
112
112
|
* Space Complexity: O(1)
|
|
@@ -126,15 +126,15 @@ export class AVLTree extends BST {
|
|
|
126
126
|
*
|
|
127
127
|
* The function overrides the delete method in a TypeScript class, performs deletion, and then
|
|
128
128
|
* balances the tree if necessary.
|
|
129
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
129
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `keyOrNodeOrEntryOrRaw`
|
|
130
130
|
* parameter in the `override delete` method can be one of the following types:
|
|
131
131
|
* @returns The `delete` method is being overridden in this code snippet. It first calls the `delete`
|
|
132
132
|
* method from the superclass (presumably a parent class) with the provided `predicate`, which could
|
|
133
133
|
* be a key, node, entry, or a custom predicate. The result of this deletion operation is stored in
|
|
134
134
|
* `deletedResults`, which is an array of `BinaryTreeDeleteResult` objects.
|
|
135
135
|
*/
|
|
136
|
-
delete(
|
|
137
|
-
const deletedResults = super.delete(
|
|
136
|
+
delete(keyOrNodeOrEntryOrRaw) {
|
|
137
|
+
const deletedResults = super.delete(keyOrNodeOrEntryOrRaw);
|
|
138
138
|
for (const { needBalanced } of deletedResults) {
|
|
139
139
|
if (needBalanced) {
|
|
140
140
|
this._balancePath(needBalanced);
|
|
@@ -235,16 +235,16 @@ export declare class BinaryTree<K = any, V = any, R = BTNEntry<K, V>, NODE exten
|
|
|
235
235
|
*
|
|
236
236
|
* The function `delete` in TypeScript implements the deletion of a node in a binary tree and returns
|
|
237
237
|
* the deleted node along with information for tree balancing.
|
|
238
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
238
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw
|
|
239
239
|
* - The `delete` method you provided is used to delete a node from a binary tree based on the key,
|
|
240
|
-
* node, entry
|
|
240
|
+
* node, entry or raw data. The method returns an array of
|
|
241
241
|
* `BinaryTreeDeleteResult` objects containing information about the deleted node and whether
|
|
242
242
|
* balancing is needed.
|
|
243
243
|
* @returns The `delete` method returns an array of `BinaryTreeDeleteResult` objects. Each object in
|
|
244
244
|
* the array contains information about the node that was deleted (`deleted`) and the node that may
|
|
245
245
|
* need to be balanced (`needBalanced`).
|
|
246
246
|
*/
|
|
247
|
-
delete(
|
|
247
|
+
delete(keyOrNodeOrEntryOrRaw: BTNKeyOrNodeOrEntry<K, V, NODE> | R): BinaryTreeDeleteResult<NODE>[];
|
|
248
248
|
/**
|
|
249
249
|
* Time Complexity: O(n)
|
|
250
250
|
* Space Complexity: O(k + log n)
|
|
@@ -657,8 +657,65 @@ export declare class BinaryTree<K = any, V = any, R = BTNEntry<K, V>, NODE exten
|
|
|
657
657
|
* binary tree with the specified options.
|
|
658
658
|
*/
|
|
659
659
|
toVisual(beginRoot?: BTNKeyOrNodeOrEntry<K, V, NODE> | R, options?: BinaryTreePrintOptions): string;
|
|
660
|
-
|
|
661
|
-
|
|
660
|
+
/**
|
|
661
|
+
* Time Complexity: O(n)
|
|
662
|
+
* Space Complexity: O(n)
|
|
663
|
+
*
|
|
664
|
+
* The function `print` in TypeScript overrides the default print behavior to log a visual
|
|
665
|
+
* representation of the binary tree to the console.
|
|
666
|
+
* @param {BinaryTreePrintOptions} [options] - The `options` parameter is used to specify the
|
|
667
|
+
* printing options for the binary tree. It is an optional parameter that allows you to customize how
|
|
668
|
+
* the binary tree is printed, such as choosing between different traversal orders or formatting
|
|
669
|
+
* options.
|
|
670
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} beginRoot - The `beginRoot` parameter in the
|
|
671
|
+
* `override print` method is used to specify the starting point for printing the binary tree. It can
|
|
672
|
+
* be either a key, a node, an entry, or the root of the tree. If no specific starting point is
|
|
673
|
+
* provided, the default value is set to
|
|
674
|
+
*/
|
|
675
|
+
print(options?: BinaryTreePrintOptions, beginRoot?: BTNKeyOrNodeOrEntry<K, V, NODE> | R): void;
|
|
676
|
+
/**
|
|
677
|
+
* Time complexity: O(n)
|
|
678
|
+
* Space complexity: O(n)
|
|
679
|
+
*
|
|
680
|
+
* The `_dfs` function performs a depth-first search traversal on a binary tree structure based on
|
|
681
|
+
* the specified order pattern and callback function.
|
|
682
|
+
* @param {C} callback - The `callback` parameter in the `_dfs` method is a function that will be
|
|
683
|
+
* called on each node visited during the depth-first search traversal. It is of type `C`, which
|
|
684
|
+
* extends `BTNCallback<OptBTNOrNull<NODE>>`. The default value for this parameter is `this._DEFAULT
|
|
685
|
+
* @param {DFSOrderPattern} [pattern=IN] - The `pattern` parameter in the `_dfs` method specifies the
|
|
686
|
+
* order in which the nodes are visited during the Depth-First Search traversal. It can have one of
|
|
687
|
+
* the following values:
|
|
688
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} beginRoot - The `beginRoot` parameter in the `_dfs`
|
|
689
|
+
* method is used to specify the starting point for the depth-first search traversal in a binary
|
|
690
|
+
* tree. It can be provided as either a `BTNKeyOrNodeOrEntry` object or a reference to the root node
|
|
691
|
+
* of the tree. If no specific
|
|
692
|
+
* @param {IterationType} iterationType - The `iterationType` parameter in the `_dfs` method
|
|
693
|
+
* specifies the type of iteration to be performed during the Depth-First Search (DFS) traversal of a
|
|
694
|
+
* binary tree. It can have two possible values:
|
|
695
|
+
* @param [includeNull=false] - The `includeNull` parameter in the `_dfs` method is a boolean flag
|
|
696
|
+
* that determines whether null nodes should be included in the depth-first search traversal. If
|
|
697
|
+
* `includeNull` is set to `true`, null nodes will be considered during the traversal process. If it
|
|
698
|
+
* is set to `false`,
|
|
699
|
+
* @param shouldVisitLeft - The `shouldVisitLeft` parameter is a function that takes a node as input
|
|
700
|
+
* and returns a boolean value. It is used to determine whether the left child of a node should be
|
|
701
|
+
* visited during the depth-first search traversal. By default, it checks if the node is truthy (not
|
|
702
|
+
* null or undefined
|
|
703
|
+
* @param shouldVisitRight - The `shouldVisitRight` parameter is a function that takes a node as an
|
|
704
|
+
* argument and returns a boolean value. It is used to determine whether the right child of a node
|
|
705
|
+
* should be visited during the depth-first search traversal. The default implementation checks if
|
|
706
|
+
* the node is truthy before visiting the right child
|
|
707
|
+
* @param shouldVisitRoot - The `shouldVisitRoot` parameter is a function that takes a node as an
|
|
708
|
+
* argument and returns a boolean value. It is used to determine whether the root node should be
|
|
709
|
+
* visited during the depth-first search traversal based on certain conditions. The default
|
|
710
|
+
* implementation checks if the node is a real node or null based
|
|
711
|
+
* @param shouldProcessRoot - The `shouldProcessRoot` parameter is a function that takes a node as an
|
|
712
|
+
* argument and returns a boolean value indicating whether the node should be processed during the
|
|
713
|
+
* depth-first search traversal. The default implementation checks if the node is a real node or null
|
|
714
|
+
* based on the `includeNull` flag. If `
|
|
715
|
+
* @returns The function `_dfs` returns an array of the return type of the callback function provided
|
|
716
|
+
* as input.
|
|
717
|
+
*/
|
|
718
|
+
protected _dfs<C extends BTNCallback<OptBTNOrNull<NODE>>>(callback?: C, pattern?: DFSOrderPattern, beginRoot?: BTNKeyOrNodeOrEntry<K, V, NODE> | R, iterationType?: IterationType, includeNull?: boolean, shouldVisitLeft?: (node: OptBTNOrNull<NODE>) => boolean, shouldVisitRight?: (node: OptBTNOrNull<NODE>) => boolean, shouldVisitRoot?: (node: OptBTNOrNull<NODE>) => boolean, shouldProcessRoot?: (node: OptBTNOrNull<NODE>) => boolean): ReturnType<C>[];
|
|
662
719
|
/**
|
|
663
720
|
* Time Complexity: O(1)
|
|
664
721
|
* Space Complexity: O(1)
|
|
@@ -436,20 +436,20 @@ export class BinaryTree extends IterableEntryBase {
|
|
|
436
436
|
*
|
|
437
437
|
* The function `delete` in TypeScript implements the deletion of a node in a binary tree and returns
|
|
438
438
|
* the deleted node along with information for tree balancing.
|
|
439
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
439
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw
|
|
440
440
|
* - The `delete` method you provided is used to delete a node from a binary tree based on the key,
|
|
441
|
-
* node, entry
|
|
441
|
+
* node, entry or raw data. The method returns an array of
|
|
442
442
|
* `BinaryTreeDeleteResult` objects containing information about the deleted node and whether
|
|
443
443
|
* balancing is needed.
|
|
444
444
|
* @returns The `delete` method returns an array of `BinaryTreeDeleteResult` objects. Each object in
|
|
445
445
|
* the array contains information about the node that was deleted (`deleted`) and the node that may
|
|
446
446
|
* need to be balanced (`needBalanced`).
|
|
447
447
|
*/
|
|
448
|
-
delete(
|
|
448
|
+
delete(keyOrNodeOrEntryOrRaw) {
|
|
449
449
|
const deletedResult = [];
|
|
450
450
|
if (!this._root)
|
|
451
451
|
return deletedResult;
|
|
452
|
-
const curr = this.getNode(
|
|
452
|
+
const curr = this.getNode(keyOrNodeOrEntryOrRaw);
|
|
453
453
|
if (!curr)
|
|
454
454
|
return deletedResult;
|
|
455
455
|
const parent = curr?.parent;
|
|
@@ -1496,20 +1496,17 @@ export class BinaryTree extends IterableEntryBase {
|
|
|
1496
1496
|
* binary tree with the specified options.
|
|
1497
1497
|
*/
|
|
1498
1498
|
toVisual(beginRoot = this._root, options) {
|
|
1499
|
-
const opts = { isShowUndefined: false, isShowNull:
|
|
1499
|
+
const opts = { isShowUndefined: false, isShowNull: true, isShowRedBlackNIL: false, ...options };
|
|
1500
1500
|
beginRoot = this.ensureNode(beginRoot);
|
|
1501
1501
|
let output = '';
|
|
1502
1502
|
if (!beginRoot)
|
|
1503
1503
|
return output;
|
|
1504
1504
|
if (opts.isShowUndefined)
|
|
1505
|
-
output += `U for undefined
|
|
1506
|
-
`;
|
|
1505
|
+
output += `U for undefined\n`;
|
|
1507
1506
|
if (opts.isShowNull)
|
|
1508
|
-
output += `N for null
|
|
1509
|
-
`;
|
|
1507
|
+
output += `N for null\n`;
|
|
1510
1508
|
if (opts.isShowRedBlackNIL)
|
|
1511
|
-
output += `S for Sentinel Node(NIL)
|
|
1512
|
-
`;
|
|
1509
|
+
output += `S for Sentinel Node(NIL)\n`;
|
|
1513
1510
|
const display = (root) => {
|
|
1514
1511
|
const [lines, , ,] = this._displayAux(root, opts);
|
|
1515
1512
|
let paragraph = '';
|
|
@@ -1521,6 +1518,24 @@ export class BinaryTree extends IterableEntryBase {
|
|
|
1521
1518
|
display(beginRoot);
|
|
1522
1519
|
return output;
|
|
1523
1520
|
}
|
|
1521
|
+
/**
|
|
1522
|
+
* Time Complexity: O(n)
|
|
1523
|
+
* Space Complexity: O(n)
|
|
1524
|
+
*
|
|
1525
|
+
* The function `print` in TypeScript overrides the default print behavior to log a visual
|
|
1526
|
+
* representation of the binary tree to the console.
|
|
1527
|
+
* @param {BinaryTreePrintOptions} [options] - The `options` parameter is used to specify the
|
|
1528
|
+
* printing options for the binary tree. It is an optional parameter that allows you to customize how
|
|
1529
|
+
* the binary tree is printed, such as choosing between different traversal orders or formatting
|
|
1530
|
+
* options.
|
|
1531
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} beginRoot - The `beginRoot` parameter in the
|
|
1532
|
+
* `override print` method is used to specify the starting point for printing the binary tree. It can
|
|
1533
|
+
* be either a key, a node, an entry, or the root of the tree. If no specific starting point is
|
|
1534
|
+
* provided, the default value is set to
|
|
1535
|
+
*/
|
|
1536
|
+
print(options, beginRoot = this._root) {
|
|
1537
|
+
console.log(this.toVisual(beginRoot, options));
|
|
1538
|
+
}
|
|
1524
1539
|
/**
|
|
1525
1540
|
* Time complexity: O(n)
|
|
1526
1541
|
* Space complexity: O(n)
|
|
@@ -237,23 +237,18 @@ export class BST extends BinaryTree {
|
|
|
237
237
|
if (!isBalanceAdd) {
|
|
238
238
|
for (const kve of keysOrNodesOrEntriesOrRaws) {
|
|
239
239
|
const value = valuesIterator?.next().value;
|
|
240
|
-
|
|
241
|
-
inserted.push(nn);
|
|
240
|
+
inserted.push(this.add(kve, value));
|
|
242
241
|
}
|
|
243
242
|
return inserted;
|
|
244
243
|
}
|
|
245
244
|
const realBTNExemplars = [];
|
|
246
|
-
|
|
247
|
-
if (kve === undefined || kve === null)
|
|
248
|
-
return false;
|
|
249
|
-
return !(this.isEntry(kve) && (kve[0] === undefined || kve[0] === null));
|
|
250
|
-
};
|
|
245
|
+
let i = 0;
|
|
251
246
|
for (const kve of keysOrNodesOrEntriesOrRaws) {
|
|
252
|
-
|
|
253
|
-
|
|
247
|
+
realBTNExemplars.push({ key: kve, value: valuesIterator?.next().value, orgIndex: i });
|
|
248
|
+
i++;
|
|
254
249
|
}
|
|
255
250
|
let sorted = [];
|
|
256
|
-
sorted = realBTNExemplars.sort((a, b) => {
|
|
251
|
+
sorted = realBTNExemplars.sort(({ key: a }, { key: b }) => {
|
|
257
252
|
let keyA, keyB;
|
|
258
253
|
if (this.isEntry(a))
|
|
259
254
|
keyA = a[0];
|
|
@@ -284,8 +279,8 @@ export class BST extends BinaryTree {
|
|
|
284
279
|
if (arr.length === 0)
|
|
285
280
|
return;
|
|
286
281
|
const mid = Math.floor((arr.length - 1) / 2);
|
|
287
|
-
const
|
|
288
|
-
inserted.
|
|
282
|
+
const { key, value, orgIndex } = arr[mid];
|
|
283
|
+
inserted[orgIndex] = this.add(key, value);
|
|
289
284
|
_dfs(arr.slice(0, mid));
|
|
290
285
|
_dfs(arr.slice(mid + 1));
|
|
291
286
|
};
|
|
@@ -298,8 +293,8 @@ export class BST extends BinaryTree {
|
|
|
298
293
|
const [l, r] = popped;
|
|
299
294
|
if (l <= r) {
|
|
300
295
|
const m = l + Math.floor((r - l) / 2);
|
|
301
|
-
const
|
|
302
|
-
inserted.
|
|
296
|
+
const { key, value, orgIndex } = sorted[m];
|
|
297
|
+
inserted[orgIndex] = this.add(key, value);
|
|
303
298
|
stack.push([m + 1, r]);
|
|
304
299
|
stack.push([l, m - 1]);
|
|
305
300
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BinaryTreeDeleteResult, BTNKeyOrNodeOrEntry,
|
|
1
|
+
import type { BinaryTreeDeleteResult, BTNKeyOrNodeOrEntry, CRUD, RBTNColor, RBTreeOptions, RedBlackTreeNested, RedBlackTreeNodeNested, BTNEntry } from '../../types';
|
|
2
2
|
import { BST, BSTNode } from './bst';
|
|
3
3
|
import { IBinaryTree } from '../../interfaces';
|
|
4
4
|
export declare class RedBlackTreeNode<K = any, V = any, NODE extends RedBlackTreeNode<K, V, NODE> = RedBlackTreeNodeNested<K, V>> extends BSTNode<K, V, NODE> {
|
|
@@ -107,7 +107,7 @@ export declare class RedBlackTree<K = any, V = any, R = BTNEntry<K, V>, NODE ext
|
|
|
107
107
|
*
|
|
108
108
|
* The function overrides the delete method in a binary tree data structure to remove a node based on
|
|
109
109
|
* a given predicate and maintain the binary search tree properties.
|
|
110
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
110
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `keyOrNodeOrEntryOrRaw`
|
|
111
111
|
* parameter in the `override delete` method is used to specify the condition or key based on which a
|
|
112
112
|
* node should be deleted from the binary tree. It can be a key, a node, an entry, or a predicate
|
|
113
113
|
* function that determines which node(s) should be deleted.
|
|
@@ -115,7 +115,7 @@ export declare class RedBlackTree<K = any, V = any, R = BTNEntry<K, V>, NODE ext
|
|
|
115
115
|
* objects. Each object in the array contains information about the deleted node and whether
|
|
116
116
|
* balancing is needed.
|
|
117
117
|
*/
|
|
118
|
-
delete(
|
|
118
|
+
delete(keyOrNodeOrEntryOrRaw: BTNKeyOrNodeOrEntry<K, V, NODE> | R): BinaryTreeDeleteResult<NODE>[];
|
|
119
119
|
/**
|
|
120
120
|
* Time Complexity: O(1)
|
|
121
121
|
* Space Complexity: O(1)
|
|
@@ -187,7 +187,7 @@ export class RedBlackTree extends BST {
|
|
|
187
187
|
*
|
|
188
188
|
* The function overrides the delete method in a binary tree data structure to remove a node based on
|
|
189
189
|
* a given predicate and maintain the binary search tree properties.
|
|
190
|
-
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R
|
|
190
|
+
* @param {BTNKeyOrNodeOrEntry<K, V, NODE> | R} keyOrNodeOrEntryOrRaw - The `keyOrNodeOrEntryOrRaw`
|
|
191
191
|
* parameter in the `override delete` method is used to specify the condition or key based on which a
|
|
192
192
|
* node should be deleted from the binary tree. It can be a key, a node, an entry, or a predicate
|
|
193
193
|
* function that determines which node(s) should be deleted.
|
|
@@ -195,15 +195,17 @@ export class RedBlackTree extends BST {
|
|
|
195
195
|
* objects. Each object in the array contains information about the deleted node and whether
|
|
196
196
|
* balancing is needed.
|
|
197
197
|
*/
|
|
198
|
-
delete(
|
|
199
|
-
if (
|
|
198
|
+
delete(keyOrNodeOrEntryOrRaw) {
|
|
199
|
+
if (keyOrNodeOrEntryOrRaw === null)
|
|
200
200
|
return [];
|
|
201
201
|
const results = [];
|
|
202
202
|
let nodeToDelete;
|
|
203
|
-
if (this._isPredicated(
|
|
204
|
-
nodeToDelete = this.getNode(
|
|
203
|
+
if (this._isPredicated(keyOrNodeOrEntryOrRaw))
|
|
204
|
+
nodeToDelete = this.getNode(keyOrNodeOrEntryOrRaw);
|
|
205
205
|
else
|
|
206
|
-
nodeToDelete = this.isRealNode(
|
|
206
|
+
nodeToDelete = this.isRealNode(keyOrNodeOrEntryOrRaw)
|
|
207
|
+
? keyOrNodeOrEntryOrRaw
|
|
208
|
+
: this.getNode(keyOrNodeOrEntryOrRaw);
|
|
207
209
|
if (!nodeToDelete) {
|
|
208
210
|
return results;
|
|
209
211
|
}
|