linked-list-typed 1.50.2 → 1.50.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/data-structures/base/iterable-base.d.ts +6 -0
  2. package/dist/data-structures/binary-tree/avl-tree.d.ts +29 -1
  3. package/dist/data-structures/binary-tree/avl-tree.js +33 -1
  4. package/dist/data-structures/binary-tree/binary-indexed-tree.d.ts +22 -0
  5. package/dist/data-structures/binary-tree/binary-indexed-tree.js +22 -0
  6. package/dist/data-structures/binary-tree/binary-tree.d.ts +1 -1
  7. package/dist/data-structures/binary-tree/binary-tree.js +1 -1
  8. package/dist/data-structures/binary-tree/bst.d.ts +46 -13
  9. package/dist/data-structures/binary-tree/bst.js +46 -13
  10. package/dist/data-structures/binary-tree/rb-tree.d.ts +54 -2
  11. package/dist/data-structures/binary-tree/rb-tree.js +73 -15
  12. package/dist/data-structures/binary-tree/segment-tree.d.ts +99 -6
  13. package/dist/data-structures/binary-tree/segment-tree.js +127 -10
  14. package/dist/data-structures/binary-tree/tree-multimap.d.ts +35 -2
  15. package/dist/data-structures/binary-tree/tree-multimap.js +38 -0
  16. package/dist/data-structures/graph/abstract-graph.d.ts +0 -78
  17. package/dist/data-structures/graph/abstract-graph.js +0 -189
  18. package/dist/data-structures/graph/directed-graph.d.ts +59 -0
  19. package/dist/data-structures/graph/directed-graph.js +105 -0
  20. package/dist/data-structures/graph/undirected-graph.d.ts +60 -7
  21. package/dist/data-structures/graph/undirected-graph.js +126 -18
  22. package/dist/data-structures/hash/hash-map.d.ts +143 -23
  23. package/dist/data-structures/hash/hash-map.js +196 -62
  24. package/dist/data-structures/heap/heap.d.ts +29 -19
  25. package/dist/data-structures/heap/heap.js +29 -20
  26. package/dist/data-structures/linked-list/doubly-linked-list.d.ts +71 -25
  27. package/dist/data-structures/linked-list/doubly-linked-list.js +83 -25
  28. package/dist/data-structures/linked-list/singly-linked-list.d.ts +26 -3
  29. package/dist/data-structures/linked-list/singly-linked-list.js +34 -3
  30. package/dist/data-structures/linked-list/skip-linked-list.d.ts +2 -2
  31. package/dist/data-structures/linked-list/skip-linked-list.js +2 -2
  32. package/dist/data-structures/matrix/matrix.d.ts +1 -1
  33. package/dist/data-structures/matrix/matrix.js +1 -1
  34. package/dist/data-structures/priority-queue/max-priority-queue.d.ts +10 -0
  35. package/dist/data-structures/priority-queue/max-priority-queue.js +10 -0
  36. package/dist/data-structures/priority-queue/min-priority-queue.d.ts +11 -0
  37. package/dist/data-structures/priority-queue/min-priority-queue.js +11 -0
  38. package/dist/data-structures/priority-queue/priority-queue.d.ts +8 -0
  39. package/dist/data-structures/priority-queue/priority-queue.js +8 -0
  40. package/dist/data-structures/queue/deque.d.ts +95 -21
  41. package/dist/data-structures/queue/deque.js +100 -16
  42. package/dist/data-structures/queue/queue.d.ts +65 -45
  43. package/dist/data-structures/queue/queue.js +65 -45
  44. package/dist/data-structures/stack/stack.d.ts +36 -22
  45. package/dist/data-structures/stack/stack.js +36 -22
  46. package/dist/data-structures/tree/tree.d.ts +57 -3
  47. package/dist/data-structures/tree/tree.js +77 -11
  48. package/dist/data-structures/trie/trie.d.ts +100 -36
  49. package/dist/data-structures/trie/trie.js +115 -36
  50. package/package.json +2 -2
  51. package/src/data-structures/base/iterable-base.ts +12 -0
  52. package/src/data-structures/binary-tree/avl-tree.ts +37 -3
  53. package/src/data-structures/binary-tree/binary-indexed-tree.ts +22 -0
  54. package/src/data-structures/binary-tree/binary-tree.ts +1 -1
  55. package/src/data-structures/binary-tree/bst.ts +46 -13
  56. package/src/data-structures/binary-tree/rb-tree.ts +79 -18
  57. package/src/data-structures/binary-tree/segment-tree.ts +145 -11
  58. package/src/data-structures/binary-tree/tree-multimap.ts +42 -3
  59. package/src/data-structures/graph/abstract-graph.ts +0 -211
  60. package/src/data-structures/graph/directed-graph.ts +122 -0
  61. package/src/data-structures/graph/undirected-graph.ts +143 -19
  62. package/src/data-structures/hash/hash-map.ts +228 -76
  63. package/src/data-structures/heap/heap.ts +31 -20
  64. package/src/data-structures/linked-list/doubly-linked-list.ts +96 -29
  65. package/src/data-structures/linked-list/singly-linked-list.ts +42 -6
  66. package/src/data-structures/linked-list/skip-linked-list.ts +2 -2
  67. package/src/data-structures/matrix/matrix.ts +1 -1
  68. package/src/data-structures/priority-queue/max-priority-queue.ts +10 -0
  69. package/src/data-structures/priority-queue/min-priority-queue.ts +11 -0
  70. package/src/data-structures/priority-queue/priority-queue.ts +8 -0
  71. package/src/data-structures/queue/deque.ts +118 -22
  72. package/src/data-structures/queue/queue.ts +68 -45
  73. package/src/data-structures/stack/stack.ts +39 -23
  74. package/src/data-structures/tree/tree.ts +89 -15
  75. package/src/data-structures/trie/trie.ts +131 -40
@@ -198,7 +198,10 @@ export declare abstract class IterableEntryBase<K = any, V = any> {
198
198
  */
199
199
  print(): void;
200
200
  abstract isEmpty(): boolean;
201
+ abstract clear(): void;
201
202
  abstract clone(): any;
203
+ abstract map(...args: any[]): any;
204
+ abstract filter(...args: any[]): any;
202
205
  protected abstract _getIterator(...args: any[]): IterableIterator<[K, V]>;
203
206
  }
204
207
  export declare abstract class IterableElementBase<E = any, C = any> {
@@ -343,6 +346,9 @@ export declare abstract class IterableElementBase<E = any, C = any> {
343
346
  */
344
347
  print(): void;
345
348
  abstract isEmpty(): boolean;
349
+ abstract clear(): void;
346
350
  abstract clone(): C;
351
+ abstract map(...args: any[]): any;
352
+ abstract filter(...args: any[]): any;
347
353
  protected abstract _getIterator(...args: any[]): IterableIterator<E>;
348
354
  }
@@ -9,8 +9,27 @@ import { BST, BSTNode } from './bst';
9
9
  import type { AVLTreeNested, AVLTreeNodeNested, AVLTreeOptions, BinaryTreeDeleteResult, BSTNKeyOrNode, BTNCallback, KeyOrNodeOrEntry } 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
- height: number;
12
+ /**
13
+ * The constructor function initializes a new instance of a class with a key and an optional value,
14
+ * and sets the height property to 0.
15
+ * @param {K} key - The "key" parameter is of type K, which represents the type of the key for the
16
+ * constructor. It is used to initialize the key property of the object being created.
17
+ * @param {V} [value] - The "value" parameter is an optional parameter of type V. It represents the
18
+ * value associated with the key in the constructor.
19
+ */
13
20
  constructor(key: K, value?: V);
21
+ protected _height: number;
22
+ /**
23
+ * The function returns the value of the height property.
24
+ * @returns The height of the object.
25
+ */
26
+ get height(): number;
27
+ /**
28
+ * The above function sets the value of the height property.
29
+ * @param {number} value - The value parameter is a number that represents the new height value to be
30
+ * set.
31
+ */
32
+ set height(value: number);
14
33
  }
15
34
  /**
16
35
  * 1. Height-Balanced: Each node's left and right subtrees differ in height by no more than one.
@@ -195,5 +214,14 @@ export declare class AVLTree<K = any, V = any, NODE extends AVLTreeNode<K, V, NO
195
214
  * AVL tree that needs to be balanced.
196
215
  */
197
216
  protected _balancePath(node: KeyOrNodeOrEntry<K, V, NODE>): void;
217
+ /**
218
+ * The function replaces an old node with a new node while preserving the height of the old node.
219
+ * @param {NODE} oldNode - The `oldNode` parameter is the node that you want to replace with the
220
+ * `newNode`.
221
+ * @param {NODE} newNode - The `newNode` parameter is the new node that will replace the `oldNode` in
222
+ * the data structure.
223
+ * @returns the result of calling the `_replaceNode` method on the superclass, passing in the
224
+ * `oldNode` and `newNode` as arguments.
225
+ */
198
226
  protected _replaceNode(oldNode: NODE, newNode: NODE): NODE;
199
227
  }
@@ -10,9 +10,32 @@ exports.AVLTree = exports.AVLTreeNode = void 0;
10
10
  */
11
11
  const bst_1 = require("./bst");
12
12
  class AVLTreeNode extends bst_1.BSTNode {
13
+ /**
14
+ * The constructor function initializes a new instance of a class with a key and an optional value,
15
+ * and sets the height property to 0.
16
+ * @param {K} key - The "key" parameter is of type K, which represents the type of the key for the
17
+ * constructor. It is used to initialize the key property of the object being created.
18
+ * @param {V} [value] - The "value" parameter is an optional parameter of type V. It represents the
19
+ * value associated with the key in the constructor.
20
+ */
13
21
  constructor(key, value) {
14
22
  super(key, value);
15
- this.height = 0;
23
+ this._height = 0;
24
+ }
25
+ /**
26
+ * The function returns the value of the height property.
27
+ * @returns The height of the object.
28
+ */
29
+ get height() {
30
+ return this._height;
31
+ }
32
+ /**
33
+ * The above function sets the value of the height property.
34
+ * @param {number} value - The value parameter is a number that represents the new height value to be
35
+ * set.
36
+ */
37
+ set height(value) {
38
+ this._height = value;
16
39
  }
17
40
  }
18
41
  exports.AVLTreeNode = AVLTreeNode;
@@ -450,6 +473,15 @@ class AVLTree extends bst_1.BST {
450
473
  // TODO So far, no sure if this is necessary that Recursive Repair: Once rotation operations are executed, it may cause imbalance issues at higher levels of the tree. Therefore, you need to recursively check and repair imbalance problems upwards until you reach the root node.
451
474
  }
452
475
  }
476
+ /**
477
+ * The function replaces an old node with a new node while preserving the height of the old node.
478
+ * @param {NODE} oldNode - The `oldNode` parameter is the node that you want to replace with the
479
+ * `newNode`.
480
+ * @param {NODE} newNode - The `newNode` parameter is the new node that will replace the `oldNode` in
481
+ * the data structure.
482
+ * @returns the result of calling the `_replaceNode` method on the superclass, passing in the
483
+ * `oldNode` and `newNode` as arguments.
484
+ */
453
485
  _replaceNode(oldNode, newNode) {
454
486
  newNode.height = oldNode.height;
455
487
  return super._replaceNode(oldNode, newNode);
@@ -12,12 +12,34 @@ export declare class BinaryIndexedTree {
12
12
  max: number;
13
13
  });
14
14
  protected _freqMap: Record<number, number>;
15
+ /**
16
+ * The function returns the frequency map of numbers.
17
+ * @returns The `_freqMap` property, which is a record with number keys and number values, is being
18
+ * returned.
19
+ */
15
20
  get freqMap(): Record<number, number>;
16
21
  protected _msb: number;
22
+ /**
23
+ * The function returns the value of the _msb property.
24
+ * @returns The `_msb` property of the object.
25
+ */
17
26
  get msb(): number;
18
27
  protected _negativeCount: number;
28
+ /**
29
+ * The function returns the value of the _negativeCount property.
30
+ * @returns The method is returning the value of the variable `_negativeCount`, which is of type
31
+ * `number`.
32
+ */
19
33
  get negativeCount(): number;
34
+ /**
35
+ * The above function returns the value of the protected variable `_freq`.
36
+ * @returns The frequency value stored in the protected variable `_freq`.
37
+ */
20
38
  get freq(): number;
39
+ /**
40
+ * The above function returns the maximum value.
41
+ * @returns The maximum value stored in the variable `_max`.
42
+ */
21
43
  get max(): number;
22
44
  /**
23
45
  * The function "readSingle" reads a single number from a specified index.
@@ -23,18 +23,40 @@ class BinaryIndexedTree {
23
23
  this._msb = (0, utils_1.getMSB)(max);
24
24
  this._negativeCount = frequency < 0 ? max : 0;
25
25
  }
26
+ /**
27
+ * The function returns the frequency map of numbers.
28
+ * @returns The `_freqMap` property, which is a record with number keys and number values, is being
29
+ * returned.
30
+ */
26
31
  get freqMap() {
27
32
  return this._freqMap;
28
33
  }
34
+ /**
35
+ * The function returns the value of the _msb property.
36
+ * @returns The `_msb` property of the object.
37
+ */
29
38
  get msb() {
30
39
  return this._msb;
31
40
  }
41
+ /**
42
+ * The function returns the value of the _negativeCount property.
43
+ * @returns The method is returning the value of the variable `_negativeCount`, which is of type
44
+ * `number`.
45
+ */
32
46
  get negativeCount() {
33
47
  return this._negativeCount;
34
48
  }
49
+ /**
50
+ * The above function returns the value of the protected variable `_freq`.
51
+ * @returns The frequency value stored in the protected variable `_freq`.
52
+ */
35
53
  get freq() {
36
54
  return this._freq;
37
55
  }
56
+ /**
57
+ * The above function returns the maximum value.
58
+ * @returns The maximum value stored in the variable `_max`.
59
+ */
38
60
  get max() {
39
61
  return this._max;
40
62
  }
@@ -21,7 +21,7 @@ export declare class BinaryTreeNode<K = any, V = any, NODE extends BinaryTreeNod
21
21
  /**
22
22
  * The constructor function initializes an object with a key and an optional value.
23
23
  * @param {K} key - The "key" parameter is of type K, which represents the type of the key for the
24
- * constructor. It is used to set the value of the "key" property of the object being created.
24
+ * constructor. It is used to set the key property of the object being created.
25
25
  * @param {V} [value] - The "value" parameter is an optional parameter of type V. It represents the
26
26
  * value associated with the key in the constructor.
27
27
  */
@@ -21,7 +21,7 @@ class BinaryTreeNode {
21
21
  /**
22
22
  * The constructor function initializes an object with a key and an optional value.
23
23
  * @param {K} key - The "key" parameter is of type K, which represents the type of the key for the
24
- * constructor. It is used to set the value of the "key" property of the object being created.
24
+ * constructor. It is used to set the key property of the object being created.
25
25
  * @param {V} [value] - The "value" parameter is an optional parameter of type V. It represents the
26
26
  * value associated with the key in the constructor.
27
27
  */
@@ -13,10 +13,29 @@ export declare class BSTNode<K = any, V = any, NODE extends BSTNode<K, V, NODE>
13
13
  parent?: NODE;
14
14
  constructor(key: K, value?: V);
15
15
  protected _left?: NODE;
16
+ /**
17
+ * The function returns the value of the `_left` property.
18
+ * @returns The `_left` property of the current object is being returned.
19
+ */
16
20
  get left(): NODE | undefined;
21
+ /**
22
+ * The function sets the left child of a node and updates the parent reference of the child.
23
+ * @param {NODE | undefined} v - The parameter `v` is of type `NODE | undefined`. It can either be an
24
+ * instance of the `NODE` class or `undefined`.
25
+ */
17
26
  set left(v: NODE | undefined);
18
27
  protected _right?: NODE;
28
+ /**
29
+ * The function returns the right node of a binary tree or undefined if there is no right node.
30
+ * @returns The method is returning the value of the `_right` property, which is of type `NODE` or
31
+ * `undefined`.
32
+ */
19
33
  get right(): NODE | undefined;
34
+ /**
35
+ * The function sets the right child of a node and updates the parent reference of the child.
36
+ * @param {NODE | undefined} v - The parameter `v` is of type `NODE | undefined`. It can either be a
37
+ * `NODE` object or `undefined`.
38
+ */
20
39
  set right(v: NODE | undefined);
21
40
  }
22
41
  /**
@@ -30,33 +49,42 @@ export declare class BSTNode<K = any, V = any, NODE extends BSTNode<K, V, NODE>
30
49
  */
31
50
  export declare class BST<K = any, V = any, NODE extends BSTNode<K, V, NODE> = BSTNode<K, V, BSTNodeNested<K, V>>, TREE extends BST<K, V, NODE, TREE> = BST<K, V, NODE, BSTNested<K, V, NODE>>> extends BinaryTree<K, V, NODE, TREE> implements IBinaryTree<K, V, NODE, TREE> {
32
51
  /**
33
- * This is the constructor function for a binary search tree class in TypeScript, which initializes
34
- * the tree with optional keysOrNodesOrEntries and options.
35
- * @param [keysOrNodesOrEntries] - An optional iterable of KeyOrNodeOrEntry objects that will be added to the
36
- * binary search tree.
52
+ * This is the constructor function for a TypeScript class that initializes a binary search tree with
53
+ * optional keys or nodes or entries and options.
54
+ * @param keysOrNodesOrEntries - An iterable object that contains keys, nodes, or entries. It is used
55
+ * to initialize the binary search tree with the provided keys, nodes, or entries.
37
56
  * @param [options] - The `options` parameter is an optional object that can contain additional
38
57
  * configuration options for the binary search tree. It can have the following properties:
39
58
  */
40
59
  constructor(keysOrNodesOrEntries?: Iterable<KeyOrNodeOrEntry<K, V, NODE>>, options?: BSTOptions<K>);
41
60
  protected _root?: NODE;
61
+ /**
62
+ * The function returns the root node of a tree structure.
63
+ * @returns The `_root` property of the object, which is of type `NODE` or `undefined`.
64
+ */
42
65
  get root(): NODE | undefined;
43
66
  protected _variant: BSTVariant;
67
+ /**
68
+ * The function returns the value of the _variant property.
69
+ * @returns The value of the `_variant` property.
70
+ */
44
71
  get variant(): BSTVariant;
45
72
  /**
46
- * The function creates a new binary search tree node with the given key and value.
47
- * @param {K} key - The key parameter is the key value that will be associated with
48
- * the new node. It is used to determine the position of the node in the binary search tree.
49
- * @param [value] - The parameter `value` is an optional value that can be assigned to the node. It
50
- * represents the value associated with the node in a binary search tree.
51
- * @returns a new instance of the BSTNode class with the specified key and value.
73
+ * The function creates a new BSTNode with the given key and value and returns it.
74
+ * @param {K} key - The key parameter is of type K, which represents the type of the key for the node
75
+ * being created.
76
+ * @param {V} [value] - The "value" parameter is an optional parameter of type V. It represents the
77
+ * value associated with the key in the node being created.
78
+ * @returns The method is returning a new instance of the BSTNode class, casted as the NODE type.
52
79
  */
53
80
  createNode(key: K, value?: V): NODE;
54
81
  /**
55
82
  * The function creates a new binary search tree with the specified options.
56
83
  * @param [options] - The `options` parameter is an optional object that allows you to customize the
57
- * behavior of the `createTree` method. It accepts a partial `BSTOptions` object, which is a type
58
- * that defines various options for creating a binary search tree.
59
- * @returns a new instance of the BST class with the specified options.
84
+ * behavior of the `createTree` method. It is of type `Partial<BSTOptions<K>>`, which means it is a
85
+ * partial object of type `BSTOptions<K>`.
86
+ * @returns a new instance of the BST class, with the provided options merged with the default
87
+ * options. The returned value is casted as TREE.
60
88
  */
61
89
  createTree(options?: Partial<BSTOptions<K>>): TREE;
62
90
  /**
@@ -333,6 +361,11 @@ export declare class BST<K = any, V = any, NODE extends BSTNode<K, V, NODE> = BS
333
361
  * @returns a boolean value.
334
362
  */
335
363
  isAVLBalanced(iterationType?: IterationType): boolean;
364
+ /**
365
+ * The function sets the root property of an object and updates the parent property of the new root.
366
+ * @param {NODE | undefined} v - The parameter `v` is of type `NODE | undefined`. This means that it
367
+ * can either be an object of type `NODE` or it can be `undefined`.
368
+ */
336
369
  protected _setRoot(v: NODE | undefined): void;
337
370
  /**
338
371
  * The function compares two values using a comparator function and returns whether the first value
@@ -11,18 +11,37 @@ class BSTNode extends binary_tree_1.BinaryTreeNode {
11
11
  this._left = undefined;
12
12
  this._right = undefined;
13
13
  }
14
+ /**
15
+ * The function returns the value of the `_left` property.
16
+ * @returns The `_left` property of the current object is being returned.
17
+ */
14
18
  get left() {
15
19
  return this._left;
16
20
  }
21
+ /**
22
+ * The function sets the left child of a node and updates the parent reference of the child.
23
+ * @param {NODE | undefined} v - The parameter `v` is of type `NODE | undefined`. It can either be an
24
+ * instance of the `NODE` class or `undefined`.
25
+ */
17
26
  set left(v) {
18
27
  if (v) {
19
28
  v.parent = this;
20
29
  }
21
30
  this._left = v;
22
31
  }
32
+ /**
33
+ * The function returns the right node of a binary tree or undefined if there is no right node.
34
+ * @returns The method is returning the value of the `_right` property, which is of type `NODE` or
35
+ * `undefined`.
36
+ */
23
37
  get right() {
24
38
  return this._right;
25
39
  }
40
+ /**
41
+ * The function sets the right child of a node and updates the parent reference of the child.
42
+ * @param {NODE | undefined} v - The parameter `v` is of type `NODE | undefined`. It can either be a
43
+ * `NODE` object or `undefined`.
44
+ */
26
45
  set right(v) {
27
46
  if (v) {
28
47
  v.parent = this;
@@ -42,10 +61,10 @@ exports.BSTNode = BSTNode;
42
61
  */
43
62
  class BST extends binary_tree_1.BinaryTree {
44
63
  /**
45
- * This is the constructor function for a binary search tree class in TypeScript, which initializes
46
- * the tree with optional keysOrNodesOrEntries and options.
47
- * @param [keysOrNodesOrEntries] - An optional iterable of KeyOrNodeOrEntry objects that will be added to the
48
- * binary search tree.
64
+ * This is the constructor function for a TypeScript class that initializes a binary search tree with
65
+ * optional keys or nodes or entries and options.
66
+ * @param keysOrNodesOrEntries - An iterable object that contains keys, nodes, or entries. It is used
67
+ * to initialize the binary search tree with the provided keys, nodes, or entries.
49
68
  * @param [options] - The `options` parameter is an optional object that can contain additional
50
69
  * configuration options for the binary search tree. It can have the following properties:
51
70
  */
@@ -61,19 +80,27 @@ class BST extends binary_tree_1.BinaryTree {
61
80
  if (keysOrNodesOrEntries)
62
81
  this.addMany(keysOrNodesOrEntries);
63
82
  }
83
+ /**
84
+ * The function returns the root node of a tree structure.
85
+ * @returns The `_root` property of the object, which is of type `NODE` or `undefined`.
86
+ */
64
87
  get root() {
65
88
  return this._root;
66
89
  }
90
+ /**
91
+ * The function returns the value of the _variant property.
92
+ * @returns The value of the `_variant` property.
93
+ */
67
94
  get variant() {
68
95
  return this._variant;
69
96
  }
70
97
  /**
71
- * The function creates a new binary search tree node with the given key and value.
72
- * @param {K} key - The key parameter is the key value that will be associated with
73
- * the new node. It is used to determine the position of the node in the binary search tree.
74
- * @param [value] - The parameter `value` is an optional value that can be assigned to the node. It
75
- * represents the value associated with the node in a binary search tree.
76
- * @returns a new instance of the BSTNode class with the specified key and value.
98
+ * The function creates a new BSTNode with the given key and value and returns it.
99
+ * @param {K} key - The key parameter is of type K, which represents the type of the key for the node
100
+ * being created.
101
+ * @param {V} [value] - The "value" parameter is an optional parameter of type V. It represents the
102
+ * value associated with the key in the node being created.
103
+ * @returns The method is returning a new instance of the BSTNode class, casted as the NODE type.
77
104
  */
78
105
  createNode(key, value) {
79
106
  return new BSTNode(key, value);
@@ -81,9 +108,10 @@ class BST extends binary_tree_1.BinaryTree {
81
108
  /**
82
109
  * The function creates a new binary search tree with the specified options.
83
110
  * @param [options] - The `options` parameter is an optional object that allows you to customize the
84
- * behavior of the `createTree` method. It accepts a partial `BSTOptions` object, which is a type
85
- * that defines various options for creating a binary search tree.
86
- * @returns a new instance of the BST class with the specified options.
111
+ * behavior of the `createTree` method. It is of type `Partial<BSTOptions<K>>`, which means it is a
112
+ * partial object of type `BSTOptions<K>`.
113
+ * @returns a new instance of the BST class, with the provided options merged with the default
114
+ * options. The returned value is casted as TREE.
87
115
  */
88
116
  createTree(options) {
89
117
  return new BST([], Object.assign({ iterationType: this.iterationType, variant: this.variant }, options));
@@ -742,6 +770,11 @@ class BST extends binary_tree_1.BinaryTree {
742
770
  }
743
771
  return balanced;
744
772
  }
773
+ /**
774
+ * The function sets the root property of an object and updates the parent property of the new root.
775
+ * @param {NODE | undefined} v - The parameter `v` is of type `NODE | undefined`. This means that it
776
+ * can either be an object of type `NODE` or it can be `undefined`.
777
+ */
745
778
  _setRoot(v) {
746
779
  if (v) {
747
780
  v.parent = undefined;
@@ -9,8 +9,29 @@ import { BinaryTreeDeleteResult, BSTNKeyOrNode, BTNCallback, KeyOrNodeOrEntry, R
9
9
  import { BST, BSTNode } from './bst';
10
10
  import { IBinaryTree } from '../../interfaces';
11
11
  export declare class RedBlackTreeNode<K = any, V = any, NODE extends RedBlackTreeNode<K, V, NODE> = RedBlackTreeNodeNested<K, V>> extends BSTNode<K, V, NODE> {
12
- color: RBTNColor;
12
+ /**
13
+ * The constructor function initializes a Red-Black Tree Node with a key, an optional value, and a
14
+ * color.
15
+ * @param {K} key - The key parameter is of type K and represents the key of the node in the
16
+ * Red-Black Tree.
17
+ * @param {V} [value] - The `value` parameter is an optional parameter that represents the value
18
+ * associated with the key in the Red-Black Tree Node. It is not required and can be omitted when
19
+ * creating a new instance of the Red-Black Tree Node.
20
+ * @param {RBTNColor} color - The `color` parameter is used to specify the color of the Red-Black
21
+ * Tree Node. It is an optional parameter with a default value of `RBTNColor.BLACK`.
22
+ */
13
23
  constructor(key: K, value?: V, color?: RBTNColor);
24
+ protected _color: RBTNColor;
25
+ /**
26
+ * The function returns the color value of a variable.
27
+ * @returns The color value stored in the protected variable `_color`.
28
+ */
29
+ get color(): RBTNColor;
30
+ /**
31
+ * The function sets the color property to the specified value.
32
+ * @param {RBTNColor} value - The value parameter is of type RBTNColor.
33
+ */
34
+ set color(value: RBTNColor);
14
35
  }
15
36
  /**
16
37
  * 1. Each node is either red or black.
@@ -20,7 +41,6 @@ export declare class RedBlackTreeNode<K = any, V = any, NODE extends RedBlackTre
20
41
  * 5. Black balance: Every path from any node to each of its leaf nodes contains the same number of black nodes.
21
42
  */
22
43
  export declare class RedBlackTree<K = any, V = any, NODE extends RedBlackTreeNode<K, V, NODE> = RedBlackTreeNode<K, V, RedBlackTreeNodeNested<K, V>>, TREE extends RedBlackTree<K, V, NODE, TREE> = RedBlackTree<K, V, NODE, RedBlackTreeNested<K, V, NODE>>> extends BST<K, V, NODE, TREE> implements IBinaryTree<K, V, NODE, TREE> {
23
- Sentinel: NODE;
24
44
  /**
25
45
  * This is the constructor function for a Red-Black Tree data structure in TypeScript, which
26
46
  * initializes the tree with optional nodes and options.
@@ -33,9 +53,23 @@ export declare class RedBlackTree<K = any, V = any, NODE extends RedBlackTreeNod
33
53
  * only a subset of the properties defined in the `RBTreeOptions` interface.
34
54
  */
35
55
  constructor(keysOrNodesOrEntries?: Iterable<KeyOrNodeOrEntry<K, V, NODE>>, options?: RBTreeOptions<K>);
56
+ protected _Sentinel: NODE;
57
+ /**
58
+ * The function returns the value of the `_Sentinel` property.
59
+ * @returns The method is returning the value of the `_Sentinel` property.
60
+ */
61
+ get Sentinel(): NODE;
36
62
  protected _root: NODE;
63
+ /**
64
+ * The function returns the root node.
65
+ * @returns The root node of the data structure.
66
+ */
37
67
  get root(): NODE;
38
68
  protected _size: number;
69
+ /**
70
+ * The function returns the size of an object.
71
+ * @returns The size of the object, which is a number.
72
+ */
39
73
  get size(): number;
40
74
  /**
41
75
  * The function creates a new Red-Black Tree node with the specified key, value, and color.
@@ -74,6 +108,12 @@ export declare class RedBlackTree<K = any, V = any, NODE extends RedBlackTreeNod
74
108
  * class.
75
109
  */
76
110
  isNode(keyOrNodeOrEntry: KeyOrNodeOrEntry<K, V, NODE>): keyOrNodeOrEntry is NODE;
111
+ /**
112
+ * The function checks if a given node is a real node in a Red-Black Tree.
113
+ * @param {NODE | undefined} node - The `node` parameter is of type `NODE | undefined`, which means
114
+ * it can either be of type `NODE` or `undefined`.
115
+ * @returns a boolean value.
116
+ */
77
117
  isRealNode(node: NODE | undefined): node is NODE;
78
118
  /**
79
119
  * Time Complexity: O(log n)
@@ -143,6 +183,12 @@ export declare class RedBlackTree<K = any, V = any, NODE extends RedBlackTreeNod
143
183
  * Time Complexity: O(1)
144
184
  * Space Complexity: O(1)
145
185
  */
186
+ /**
187
+ * Time Complexity: O(1)
188
+ * Space Complexity: O(1)
189
+ *
190
+ * The "clear" function sets the root node to the sentinel node and resets the size to 0.
191
+ */
146
192
  clear(): void;
147
193
  /**
148
194
  * Time Complexity: O(log n)
@@ -158,6 +204,12 @@ export declare class RedBlackTree<K = any, V = any, NODE extends RedBlackTreeNod
158
204
  * @returns the predecessor of the given RedBlackTreeNode 'x'.
159
205
  */
160
206
  getPredecessor(x: NODE): NODE;
207
+ /**
208
+ * The function sets the root node of a tree structure and updates the parent property of the new
209
+ * root node.
210
+ * @param {NODE} v - The parameter "v" is of type "NODE", which represents a node in a data
211
+ * structure.
212
+ */
161
213
  protected _setRoot(v: NODE): void;
162
214
  /**
163
215
  * Time Complexity: O(1)