data-structure-typed 1.48.4 → 1.48.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/README.md +109 -59
- package/README_zh-CN.md +1028 -0
- package/benchmark/report.html +16 -16
- package/benchmark/report.json +204 -174
- package/dist/cjs/data-structures/base/iterable-base.d.ts +6 -6
- package/dist/cjs/data-structures/base/iterable-base.js +3 -3
- package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +5 -3
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +6 -4
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +24 -22
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +35 -22
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +30 -22
- package/dist/cjs/data-structures/binary-tree/bst.js +38 -26
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +19 -13
- package/dist/cjs/data-structures/binary-tree/rb-tree.js +20 -14
- package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +21 -14
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js +25 -18
- package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.d.ts +52 -52
- package/dist/cjs/data-structures/graph/abstract-graph.js +78 -78
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/directed-graph.d.ts +47 -47
- package/dist/cjs/data-structures/graph/directed-graph.js +56 -56
- package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/map-graph.d.ts +5 -5
- package/dist/cjs/data-structures/graph/map-graph.js +8 -8
- package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
- package/dist/cjs/data-structures/graph/undirected-graph.d.ts +29 -29
- package/dist/cjs/data-structures/graph/undirected-graph.js +57 -57
- package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/cjs/data-structures/hash/hash-map.d.ts +8 -8
- package/dist/cjs/data-structures/hash/hash-map.js +2 -2
- package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
- package/dist/cjs/interfaces/binary-tree.d.ts +2 -2
- package/dist/cjs/types/data-structures/base/base.d.ts +3 -3
- package/dist/mjs/data-structures/base/iterable-base.d.ts +6 -6
- package/dist/mjs/data-structures/base/iterable-base.js +1 -1
- package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +5 -3
- package/dist/mjs/data-structures/binary-tree/avl-tree.js +6 -4
- package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +24 -22
- package/dist/mjs/data-structures/binary-tree/binary-tree.js +36 -23
- package/dist/mjs/data-structures/binary-tree/bst.d.ts +30 -22
- package/dist/mjs/data-structures/binary-tree/bst.js +38 -26
- package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +19 -13
- package/dist/mjs/data-structures/binary-tree/rb-tree.js +20 -14
- package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +21 -14
- package/dist/mjs/data-structures/binary-tree/tree-multimap.js +25 -18
- package/dist/mjs/data-structures/graph/abstract-graph.d.ts +52 -52
- package/dist/mjs/data-structures/graph/abstract-graph.js +79 -79
- package/dist/mjs/data-structures/graph/directed-graph.d.ts +47 -47
- package/dist/mjs/data-structures/graph/directed-graph.js +56 -56
- package/dist/mjs/data-structures/graph/map-graph.d.ts +5 -5
- package/dist/mjs/data-structures/graph/map-graph.js +8 -8
- package/dist/mjs/data-structures/graph/undirected-graph.d.ts +29 -29
- package/dist/mjs/data-structures/graph/undirected-graph.js +59 -59
- package/dist/mjs/data-structures/hash/hash-map.d.ts +8 -8
- package/dist/mjs/data-structures/hash/hash-map.js +3 -3
- package/dist/mjs/interfaces/binary-tree.d.ts +2 -2
- package/dist/mjs/types/data-structures/base/base.d.ts +3 -3
- package/dist/umd/data-structure-typed.js +336 -295
- package/dist/umd/data-structure-typed.min.js +2 -2
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +2 -2
- package/src/data-structures/base/iterable-base.ts +6 -6
- package/src/data-structures/binary-tree/avl-tree.ts +7 -4
- package/src/data-structures/binary-tree/binary-tree.ts +47 -27
- package/src/data-structures/binary-tree/bst.ts +52 -32
- package/src/data-structures/binary-tree/rb-tree.ts +20 -14
- package/src/data-structures/binary-tree/tree-multimap.ts +26 -18
- package/src/data-structures/graph/abstract-graph.ts +82 -82
- package/src/data-structures/graph/directed-graph.ts +56 -56
- package/src/data-structures/graph/map-graph.ts +8 -8
- package/src/data-structures/graph/undirected-graph.ts +59 -59
- package/src/data-structures/hash/hash-map.ts +8 -8
- package/src/interfaces/binary-tree.ts +2 -2
- package/src/types/data-structures/base/base.ts +3 -3
- package/test/integration/bst.test.ts +1 -1
- package/test/performance/data-structures/binary-tree/rb-tree.test.ts +1 -1
- package/test/performance/data-structures/hash/hash-map.test.ts +8 -8
- package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +2 -2
- package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +12 -1
- package/test/performance/data-structures/priority-queue/priority-queue.test.ts +1 -1
- package/test/performance/data-structures/queue/deque.test.ts +27 -15
- package/test/performance/data-structures/queue/queue.test.ts +27 -4
- package/test/performance/data-structures/stack/stack.test.ts +2 -2
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +1 -1
- package/test/unit/data-structures/binary-tree/bst.test.ts +29 -29
- package/test/unit/data-structures/binary-tree/overall.test.ts +1 -1
- package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +3 -3
- package/test/unit/data-structures/graph/directed-graph.test.ts +15 -15
- package/test/unit/data-structures/graph/map-graph.test.ts +3 -3
- package/test/unit/data-structures/graph/undirected-graph.test.ts +12 -12
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.LinkedHashMap = exports.HashMap = void 0;
|
|
11
11
|
const utils_1 = require("../../utils");
|
|
12
12
|
const base_1 = require("../base");
|
|
13
|
-
class HashMap extends base_1.
|
|
13
|
+
class HashMap extends base_1.IterableEntryBase {
|
|
14
14
|
/**
|
|
15
15
|
* The constructor function initializes a new instance of a class with optional elements and options.
|
|
16
16
|
* @param elements - The `elements` parameter is an iterable containing key-value pairs `[K, V]`. It
|
|
@@ -230,7 +230,7 @@ class HashMap extends base_1.IterablePairBase {
|
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
exports.HashMap = HashMap;
|
|
233
|
-
class LinkedHashMap extends base_1.
|
|
233
|
+
class LinkedHashMap extends base_1.IterableEntryBase {
|
|
234
234
|
constructor(elements, options = {
|
|
235
235
|
hashFn: (key) => String(key),
|
|
236
236
|
objHashFn: (key) => key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash-map.js","sourceRoot":"","sources":["../../../../src/data-structures/hash/hash-map.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hash-map.js","sourceRoot":"","sources":["../../../../src/data-structures/hash/hash-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { BinaryTreeNested, BinaryTreeNodeNested, BinaryTreeOptions, BiTreeDelete
|
|
|
3
3
|
export interface IBinaryTree<K = number, V = any, N extends BinaryTreeNode<K, V, N> = BinaryTreeNodeNested<K, V>, TREE extends BinaryTree<K, V, N, TREE> = BinaryTreeNested<K, V, N>> {
|
|
4
4
|
createNode(key: K, value?: N['value']): N;
|
|
5
5
|
createTree(options?: Partial<BinaryTreeOptions<K>>): TREE;
|
|
6
|
-
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N>, count?: number): N | null | undefined;
|
|
7
|
-
addMany(nodes: Iterable<BTNodeExemplar<K, V, N
|
|
6
|
+
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N>, value?: V, count?: number): N | null | undefined;
|
|
7
|
+
addMany(nodes: Iterable<BTNodeExemplar<K, V, N>>, values?: Iterable<V | undefined>): (N | null | undefined)[];
|
|
8
8
|
delete<C extends BTNCallback<N>>(identifier: ReturnType<C> | null, callback: C): BiTreeDeleteResult<N>[];
|
|
9
9
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IterableElementBase,
|
|
2
|
-
export type
|
|
1
|
+
import { IterableElementBase, IterableEntryBase } from "../../../data-structures";
|
|
2
|
+
export type EntryCallback<K, V, R> = (value: V, key: K, index: number, container: IterableEntryBase<K, V>) => R;
|
|
3
3
|
export type ElementCallback<V, R> = (element: V, index: number, container: IterableElementBase<V>) => R;
|
|
4
|
-
export type
|
|
4
|
+
export type ReduceEntryCallback<K, V, R> = (accumulator: R, value: V, key: K, index: number, container: IterableEntryBase<K, V>) => R;
|
|
5
5
|
export type ReduceElementCallback<V, R> = (accumulator: R, element: V, index: number, container: IterableElementBase<V>) => R;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ElementCallback,
|
|
2
|
-
export declare abstract class
|
|
1
|
+
import { ElementCallback, EntryCallback, ReduceElementCallback, ReduceEntryCallback } from "../../types";
|
|
2
|
+
export declare abstract class IterableEntryBase<K = any, V = any> {
|
|
3
3
|
/**
|
|
4
4
|
* Time Complexity: O(n)
|
|
5
5
|
* Space Complexity: O(1)
|
|
@@ -66,7 +66,7 @@ export declare abstract class IterablePairBase<K = any, V = any> {
|
|
|
66
66
|
* @returns The `every` method is returning a boolean value. It returns `true` if every element in
|
|
67
67
|
* the collection satisfies the provided predicate function, and `false` otherwise.
|
|
68
68
|
*/
|
|
69
|
-
every(predicate:
|
|
69
|
+
every(predicate: EntryCallback<K, V, boolean>, thisArg?: any): boolean;
|
|
70
70
|
/**
|
|
71
71
|
* Time Complexity: O(n)
|
|
72
72
|
* Space Complexity: O(1)
|
|
@@ -86,7 +86,7 @@ export declare abstract class IterablePairBase<K = any, V = any> {
|
|
|
86
86
|
* @returns a boolean value. It returns true if the predicate function returns true for any pair in
|
|
87
87
|
* the collection, and false otherwise.
|
|
88
88
|
*/
|
|
89
|
-
some(predicate:
|
|
89
|
+
some(predicate: EntryCallback<K, V, boolean>, thisArg?: any): boolean;
|
|
90
90
|
/**
|
|
91
91
|
* Time Complexity: O(n)
|
|
92
92
|
* Space Complexity: O(1)
|
|
@@ -104,7 +104,7 @@ export declare abstract class IterablePairBase<K = any, V = any> {
|
|
|
104
104
|
* specify the value of `this` within the callback function. If `thisArg` is provided, it will be
|
|
105
105
|
* used as the `this` value when calling the callback function. If `thisArg` is not provided, `
|
|
106
106
|
*/
|
|
107
|
-
forEach(callbackfn:
|
|
107
|
+
forEach(callbackfn: EntryCallback<K, V, void>, thisArg?: any): void;
|
|
108
108
|
/**
|
|
109
109
|
* Time Complexity: O(n)
|
|
110
110
|
* Space Complexity: O(1)
|
|
@@ -125,7 +125,7 @@ export declare abstract class IterablePairBase<K = any, V = any> {
|
|
|
125
125
|
* @returns The `reduce` method is returning the final value of the accumulator after iterating over
|
|
126
126
|
* all the elements in the collection.
|
|
127
127
|
*/
|
|
128
|
-
reduce<U>(callbackfn:
|
|
128
|
+
reduce<U>(callbackfn: ReduceEntryCallback<K, V, U>, initialValue: U): U;
|
|
129
129
|
protected abstract _getIterator(...args: any[]): IterableIterator<[K, V]>;
|
|
130
130
|
}
|
|
131
131
|
export declare abstract class IterableElementBase<V> {
|
|
@@ -68,11 +68,13 @@ export declare class AVLTree<K = any, V = any, N extends AVLTreeNode<K, V, N> =
|
|
|
68
68
|
*
|
|
69
69
|
* The function overrides the add method of a binary tree node and balances the tree after inserting
|
|
70
70
|
* a new node.
|
|
71
|
-
* @param keyOrNodeOrEntry - The
|
|
71
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can be either a key, a node, or an
|
|
72
72
|
* entry.
|
|
73
|
-
* @
|
|
73
|
+
* @param {V} [value] - The `value` parameter represents the value associated with the key that is
|
|
74
|
+
* being added to the binary tree.
|
|
75
|
+
* @returns The method is returning either the inserted node or undefined.
|
|
74
76
|
*/
|
|
75
|
-
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N
|
|
77
|
+
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N>, value?: V): N | undefined;
|
|
76
78
|
/**
|
|
77
79
|
* Time Complexity: O(log n) - logarithmic time, where "n" is the number of nodes in the tree. The add method of the superclass (BST) has logarithmic time complexity.
|
|
78
80
|
* Space Complexity: O(1) - constant space, as it doesn't use additional data structures that scale with input size.
|
|
@@ -81,14 +81,16 @@ export class AVLTree extends BST {
|
|
|
81
81
|
*
|
|
82
82
|
* The function overrides the add method of a binary tree node and balances the tree after inserting
|
|
83
83
|
* a new node.
|
|
84
|
-
* @param keyOrNodeOrEntry - The
|
|
84
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can be either a key, a node, or an
|
|
85
85
|
* entry.
|
|
86
|
-
* @
|
|
86
|
+
* @param {V} [value] - The `value` parameter represents the value associated with the key that is
|
|
87
|
+
* being added to the binary tree.
|
|
88
|
+
* @returns The method is returning either the inserted node or undefined.
|
|
87
89
|
*/
|
|
88
|
-
add(keyOrNodeOrEntry) {
|
|
90
|
+
add(keyOrNodeOrEntry, value) {
|
|
89
91
|
if (keyOrNodeOrEntry === null)
|
|
90
92
|
return undefined;
|
|
91
|
-
const inserted = super.add(keyOrNodeOrEntry);
|
|
93
|
+
const inserted = super.add(keyOrNodeOrEntry, value);
|
|
92
94
|
if (inserted)
|
|
93
95
|
this._balancePath(inserted);
|
|
94
96
|
return inserted;
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
8
|
import type { BinaryTreeNodeNested, BinaryTreeOptions, BTNCallback, BTNodeEntry, BTNodeExemplar, BTNodeKeyOrNode } from '../../types';
|
|
9
|
-
import { BinaryTreeNested, BinaryTreePrintOptions, BiTreeDeleteResult, DFSOrderPattern, FamilyPosition, IterationType, NodeDisplayLayout
|
|
9
|
+
import { BinaryTreeNested, BinaryTreePrintOptions, BiTreeDeleteResult, DFSOrderPattern, EntryCallback, FamilyPosition, IterationType, NodeDisplayLayout } from '../../types';
|
|
10
10
|
import { IBinaryTree } from '../../interfaces';
|
|
11
|
-
import {
|
|
11
|
+
import { IterableEntryBase } from "../base";
|
|
12
12
|
/**
|
|
13
13
|
* Represents a node in a binary tree.
|
|
14
14
|
* @template V - The type of data stored in the node.
|
|
@@ -42,7 +42,7 @@ export declare class BinaryTreeNode<K = any, V = any, N extends BinaryTreeNode<K
|
|
|
42
42
|
* 8. Full Trees: Every node has either 0 or 2 children.
|
|
43
43
|
* 9. Complete Trees: All levels are fully filled except possibly the last, filled from left to right.
|
|
44
44
|
*/
|
|
45
|
-
export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V, N> = BinaryTreeNode<K, V, BinaryTreeNodeNested<K, V>>, TREE extends BinaryTree<K, V, N, TREE> = BinaryTree<K, V, N, BinaryTreeNested<K, V, N>>> extends
|
|
45
|
+
export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V, N> = BinaryTreeNode<K, V, BinaryTreeNodeNested<K, V>>, TREE extends BinaryTree<K, V, N, TREE> = BinaryTree<K, V, N, BinaryTreeNested<K, V, N>>> extends IterableEntryBase<K, V | undefined> implements IBinaryTree<K, V, N, TREE> {
|
|
46
46
|
iterationType: IterationType;
|
|
47
47
|
/**
|
|
48
48
|
* The constructor function initializes a binary tree object with optional elements and options.
|
|
@@ -82,13 +82,14 @@ export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V,
|
|
|
82
82
|
*/
|
|
83
83
|
isNode(exemplar: BTNodeExemplar<K, V, N>): exemplar is N;
|
|
84
84
|
/**
|
|
85
|
-
* The function `exemplarToNode` converts an exemplar
|
|
86
|
-
*
|
|
87
|
-
* @param
|
|
88
|
-
* function. It
|
|
89
|
-
*
|
|
85
|
+
* The function `exemplarToNode` converts an exemplar object into a node object.
|
|
86
|
+
* @param exemplar - The `exemplar` parameter is of type `BTNodeExemplar<K, V, N>`.
|
|
87
|
+
* @param {V} [value] - The `value` parameter is an optional value that can be passed to the
|
|
88
|
+
* `exemplarToNode` function. It represents the value associated with the exemplar node. If no value
|
|
89
|
+
* is provided, it will be `undefined`.
|
|
90
|
+
* @returns a value of type N (node), or null, or undefined.
|
|
90
91
|
*/
|
|
91
|
-
exemplarToNode(exemplar: BTNodeExemplar<K, V, N
|
|
92
|
+
exemplarToNode(exemplar: BTNodeExemplar<K, V, N>, value?: V): N | null | undefined;
|
|
92
93
|
/**
|
|
93
94
|
* The function checks if a given value is an entry in a binary tree node.
|
|
94
95
|
* @param kne - BTNodeExemplar<K, V,N> - A generic type representing a node in a binary tree. It has
|
|
@@ -104,11 +105,13 @@ export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V,
|
|
|
104
105
|
* Time Complexity O(log n) - O(n)
|
|
105
106
|
* Space Complexity O(1)
|
|
106
107
|
*
|
|
107
|
-
* The `add` function adds a new node to a binary tree, either by
|
|
108
|
-
*
|
|
109
|
-
* @
|
|
108
|
+
* The `add` function adds a new node to a binary tree, either by creating a new node or replacing an
|
|
109
|
+
* existing node with the same key.
|
|
110
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can be one of the following:
|
|
111
|
+
* @param {V} [value] - The value to be inserted into the binary tree.
|
|
112
|
+
* @returns The function `add` returns either a node (`N`), `null`, or `undefined`.
|
|
110
113
|
*/
|
|
111
|
-
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N
|
|
114
|
+
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N>, value?: V): N | null | undefined;
|
|
112
115
|
/**
|
|
113
116
|
* Time Complexity: O(k log n) - O(k * n)
|
|
114
117
|
* Space Complexity: O(1)
|
|
@@ -118,14 +121,13 @@ export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V,
|
|
|
118
121
|
* Time Complexity: O(k log n) - O(k * n)
|
|
119
122
|
* Space Complexity: O(1)
|
|
120
123
|
*
|
|
121
|
-
* The
|
|
122
|
-
*
|
|
123
|
-
* @param nodes -
|
|
124
|
-
*
|
|
125
|
-
* @returns The function `addMany` returns an array of
|
|
126
|
-
* `N`, `null`, or `undefined`.
|
|
124
|
+
* The `addMany` function takes in a collection of nodes and an optional collection of values, and
|
|
125
|
+
* adds each node with its corresponding value to the data structure.
|
|
126
|
+
* @param nodes - An iterable collection of BTNodeExemplar objects.
|
|
127
|
+
* @param [values] - An optional iterable of values that will be assigned to each node being added.
|
|
128
|
+
* @returns The function `addMany` returns an array of `N`, `null`, or `undefined` values.
|
|
127
129
|
*/
|
|
128
|
-
addMany(nodes: Iterable<BTNodeExemplar<K, V, N
|
|
130
|
+
addMany(nodes: Iterable<BTNodeExemplar<K, V, N>>, values?: Iterable<V | undefined>): (N | null | undefined)[];
|
|
129
131
|
/**
|
|
130
132
|
* Time Complexity: O(k * n) "n" is the number of nodes in the tree, and "k" is the number of keys to be inserted.
|
|
131
133
|
* Space Complexity: O(1)
|
|
@@ -495,7 +497,7 @@ export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V,
|
|
|
495
497
|
* @returns The `filter` method is returning a new tree object that contains the key-value pairs that
|
|
496
498
|
* pass the given predicate function.
|
|
497
499
|
*/
|
|
498
|
-
filter(predicate:
|
|
500
|
+
filter(predicate: EntryCallback<K, V | undefined, boolean>, thisArg?: any): TREE;
|
|
499
501
|
/**
|
|
500
502
|
* Time Complexity: O(n)
|
|
501
503
|
* Space Complexity: O(n)
|
|
@@ -515,7 +517,7 @@ export declare class BinaryTree<K = any, V = any, N extends BinaryTreeNode<K, V,
|
|
|
515
517
|
* will be used as the `this` value when the callback function is called. If you don't pass a value
|
|
516
518
|
* @returns The `map` method is returning a new tree object.
|
|
517
519
|
*/
|
|
518
|
-
map(callback:
|
|
520
|
+
map(callback: EntryCallback<K, V | undefined, V>, thisArg?: any): TREE;
|
|
519
521
|
/**
|
|
520
522
|
* The `print` function is used to display a binary tree structure in a visually appealing way.
|
|
521
523
|
* @param {K | N | null | undefined} [beginRoot=this.root] - The `root` parameter is of type `K | N | null |
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { FamilyPosition, IterationType } from '../../types';
|
|
9
9
|
import { trampoline } from '../../utils';
|
|
10
10
|
import { Queue } from '../queue';
|
|
11
|
-
import {
|
|
11
|
+
import { IterableEntryBase } from "../base";
|
|
12
12
|
/**
|
|
13
13
|
* Represents a node in a binary tree.
|
|
14
14
|
* @template V - The type of data stored in the node.
|
|
@@ -71,7 +71,7 @@ export class BinaryTreeNode {
|
|
|
71
71
|
* 8. Full Trees: Every node has either 0 or 2 children.
|
|
72
72
|
* 9. Complete Trees: All levels are fully filled except possibly the last, filled from left to right.
|
|
73
73
|
*/
|
|
74
|
-
export class BinaryTree extends
|
|
74
|
+
export class BinaryTree extends IterableEntryBase {
|
|
75
75
|
iterationType = IterationType.ITERATIVE;
|
|
76
76
|
/**
|
|
77
77
|
* The constructor function initializes a binary tree object with optional elements and options.
|
|
@@ -137,13 +137,14 @@ export class BinaryTree extends IterablePairBase {
|
|
|
137
137
|
return exemplar instanceof BinaryTreeNode;
|
|
138
138
|
}
|
|
139
139
|
/**
|
|
140
|
-
* The function `exemplarToNode` converts an exemplar
|
|
141
|
-
*
|
|
142
|
-
* @param
|
|
143
|
-
* function. It
|
|
144
|
-
*
|
|
140
|
+
* The function `exemplarToNode` converts an exemplar object into a node object.
|
|
141
|
+
* @param exemplar - The `exemplar` parameter is of type `BTNodeExemplar<K, V, N>`.
|
|
142
|
+
* @param {V} [value] - The `value` parameter is an optional value that can be passed to the
|
|
143
|
+
* `exemplarToNode` function. It represents the value associated with the exemplar node. If no value
|
|
144
|
+
* is provided, it will be `undefined`.
|
|
145
|
+
* @returns a value of type N (node), or null, or undefined.
|
|
145
146
|
*/
|
|
146
|
-
exemplarToNode(exemplar) {
|
|
147
|
+
exemplarToNode(exemplar, value) {
|
|
147
148
|
if (exemplar === undefined)
|
|
148
149
|
return;
|
|
149
150
|
let node;
|
|
@@ -166,7 +167,7 @@ export class BinaryTree extends IterablePairBase {
|
|
|
166
167
|
node = exemplar;
|
|
167
168
|
}
|
|
168
169
|
else if (this.isNotNodeInstance(exemplar)) {
|
|
169
|
-
node = this.createNode(exemplar);
|
|
170
|
+
node = this.createNode(exemplar, value);
|
|
170
171
|
}
|
|
171
172
|
else {
|
|
172
173
|
return;
|
|
@@ -190,13 +191,15 @@ export class BinaryTree extends IterablePairBase {
|
|
|
190
191
|
* Time Complexity O(log n) - O(n)
|
|
191
192
|
* Space Complexity O(1)
|
|
192
193
|
*
|
|
193
|
-
* The `add` function adds a new node to a binary tree, either by
|
|
194
|
-
*
|
|
195
|
-
* @
|
|
194
|
+
* The `add` function adds a new node to a binary tree, either by creating a new node or replacing an
|
|
195
|
+
* existing node with the same key.
|
|
196
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can be one of the following:
|
|
197
|
+
* @param {V} [value] - The value to be inserted into the binary tree.
|
|
198
|
+
* @returns The function `add` returns either a node (`N`), `null`, or `undefined`.
|
|
196
199
|
*/
|
|
197
|
-
add(keyOrNodeOrEntry) {
|
|
200
|
+
add(keyOrNodeOrEntry, value) {
|
|
198
201
|
let inserted;
|
|
199
|
-
const newNode = this.exemplarToNode(keyOrNodeOrEntry);
|
|
202
|
+
const newNode = this.exemplarToNode(keyOrNodeOrEntry, value);
|
|
200
203
|
if (newNode === undefined)
|
|
201
204
|
return;
|
|
202
205
|
const _bfs = (root, newNode) => {
|
|
@@ -240,18 +243,28 @@ export class BinaryTree extends IterablePairBase {
|
|
|
240
243
|
* Time Complexity: O(k log n) - O(k * n)
|
|
241
244
|
* Space Complexity: O(1)
|
|
242
245
|
*
|
|
243
|
-
* The
|
|
244
|
-
*
|
|
245
|
-
* @param nodes -
|
|
246
|
-
*
|
|
247
|
-
* @returns The function `addMany` returns an array of
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
addMany(nodes) {
|
|
246
|
+
* The `addMany` function takes in a collection of nodes and an optional collection of values, and
|
|
247
|
+
* adds each node with its corresponding value to the data structure.
|
|
248
|
+
* @param nodes - An iterable collection of BTNodeExemplar objects.
|
|
249
|
+
* @param [values] - An optional iterable of values that will be assigned to each node being added.
|
|
250
|
+
* @returns The function `addMany` returns an array of `N`, `null`, or `undefined` values.
|
|
251
|
+
*/
|
|
252
|
+
addMany(nodes, values) {
|
|
251
253
|
// TODO not sure addMany not be run multi times
|
|
252
254
|
const inserted = [];
|
|
255
|
+
let valuesIterator;
|
|
256
|
+
if (values) {
|
|
257
|
+
valuesIterator = values[Symbol.iterator]();
|
|
258
|
+
}
|
|
253
259
|
for (const kne of nodes) {
|
|
254
|
-
|
|
260
|
+
let value = undefined;
|
|
261
|
+
if (valuesIterator) {
|
|
262
|
+
const valueResult = valuesIterator.next();
|
|
263
|
+
if (!valueResult.done) {
|
|
264
|
+
value = valueResult.value;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
inserted.push(this.add(kne, value));
|
|
255
268
|
}
|
|
256
269
|
return inserted;
|
|
257
270
|
}
|
|
@@ -80,12 +80,14 @@ export declare class BST<K = any, V = any, N extends BSTNode<K, V, N> = BSTNode<
|
|
|
80
80
|
*/
|
|
81
81
|
isNode(exemplar: BTNodeExemplar<K, V, N>): exemplar is N;
|
|
82
82
|
/**
|
|
83
|
-
* The function `exemplarToNode` takes an exemplar and returns a
|
|
84
|
-
*
|
|
85
|
-
* @param exemplar - The `exemplar` parameter is of type `BTNodeExemplar<K, V, N
|
|
86
|
-
* @
|
|
83
|
+
* The function `exemplarToNode` takes an exemplar and returns a node if the exemplar is valid,
|
|
84
|
+
* otherwise it returns undefined.
|
|
85
|
+
* @param exemplar - The `exemplar` parameter is of type `BTNodeExemplar<K, V, N>`, where:
|
|
86
|
+
* @param {V} [value] - The `value` parameter is an optional value that can be passed to the
|
|
87
|
+
* `exemplarToNode` function. It represents the value associated with the exemplar node.
|
|
88
|
+
* @returns a node of type N or undefined.
|
|
87
89
|
*/
|
|
88
|
-
exemplarToNode(exemplar: BTNodeExemplar<K, V, N
|
|
90
|
+
exemplarToNode(exemplar: BTNodeExemplar<K, V, N>, value?: V): N | undefined;
|
|
89
91
|
/**
|
|
90
92
|
* Time Complexity: O(log n) - Average case for a balanced tree. In the worst case (unbalanced tree), it can be O(n).
|
|
91
93
|
* Space Complexity: O(1) - Constant space is used.
|
|
@@ -94,13 +96,15 @@ export declare class BST<K = any, V = any, N extends BSTNode<K, V, N> = BSTNode<
|
|
|
94
96
|
* Time Complexity: O(log n) - Average case for a balanced tree. In the worst case (unbalanced tree), it can be O(n).
|
|
95
97
|
* Space Complexity: O(1) - Constant space is used.
|
|
96
98
|
*
|
|
97
|
-
* The `add` function adds a new node to a binary
|
|
98
|
-
*
|
|
99
|
-
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can
|
|
100
|
-
* @
|
|
101
|
-
*
|
|
99
|
+
* The `add` function adds a new node to a binary tree, updating the value if the key already exists
|
|
100
|
+
* or inserting a new node if the key is unique.
|
|
101
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can accept three types of values:
|
|
102
|
+
* @param {V} [value] - The `value` parameter represents the value associated with the key that is
|
|
103
|
+
* being added to the binary tree.
|
|
104
|
+
* @returns The method `add` returns either the newly added node (`newNode`) or `undefined` if the
|
|
105
|
+
* node was not added.
|
|
102
106
|
*/
|
|
103
|
-
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N
|
|
107
|
+
add(keyOrNodeOrEntry: BTNodeExemplar<K, V, N>, value?: V): N | undefined;
|
|
104
108
|
/**
|
|
105
109
|
* Time Complexity: O(k log n) - Adding each element individually in a balanced tree.
|
|
106
110
|
* Space Complexity: O(k) - Additional space is required for the sorted array.
|
|
@@ -109,19 +113,23 @@ export declare class BST<K = any, V = any, N extends BSTNode<K, V, N> = BSTNode<
|
|
|
109
113
|
* Time Complexity: O(k log n) - Adding each element individually in a balanced tree.
|
|
110
114
|
* Space Complexity: O(k) - Additional space is required for the sorted array.
|
|
111
115
|
*
|
|
112
|
-
* The `addMany` function in TypeScript adds multiple nodes to a binary tree,
|
|
113
|
-
*
|
|
114
|
-
* @param keysOrNodesOrEntries - An iterable containing keys, nodes, or entries to be added to
|
|
115
|
-
* binary tree.
|
|
116
|
-
* @param [
|
|
117
|
-
*
|
|
116
|
+
* The `addMany` function in TypeScript adds multiple keys or nodes to a binary tree, optionally
|
|
117
|
+
* balancing the tree after each addition.
|
|
118
|
+
* @param keysOrNodesOrEntries - An iterable containing the keys, nodes, or entries to be added to
|
|
119
|
+
* the binary tree.
|
|
120
|
+
* @param [values] - An optional iterable of values to be associated with the keys or nodes being
|
|
121
|
+
* added. If provided, the values will be assigned to the corresponding keys or nodes in the same
|
|
122
|
+
* order. If not provided, undefined will be assigned as the value for each key or node.
|
|
123
|
+
* @param [isBalanceAdd=true] - A boolean flag indicating whether the add operation should be
|
|
124
|
+
* balanced or not. If set to true, the add operation will be balanced using a binary search tree
|
|
125
|
+
* algorithm. If set to false, the add operation will not be balanced and the elements will be added
|
|
126
|
+
* in the order they appear in the input.
|
|
118
127
|
* @param iterationType - The `iterationType` parameter is an optional parameter that specifies the
|
|
119
|
-
* type of iteration to use when adding multiple keys or nodes
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* @returns The `addMany` function returns an array of `N` or `undefined` values.
|
|
128
|
+
* type of iteration to use when adding multiple keys or nodes. It has a default value of
|
|
129
|
+
* `this.iterationType`, which suggests that it is a property of the current object.
|
|
130
|
+
* @returns The function `addMany` returns an array of nodes (`N`) or `undefined` values.
|
|
123
131
|
*/
|
|
124
|
-
addMany(keysOrNodesOrEntries: Iterable<BTNodeExemplar<K, V, N>>, isBalanceAdd?: boolean, iterationType?: IterationType): (N | undefined)[];
|
|
132
|
+
addMany(keysOrNodesOrEntries: Iterable<BTNodeExemplar<K, V, N>>, values?: Iterable<V | undefined>, isBalanceAdd?: boolean, iterationType?: IterationType): (N | undefined)[];
|
|
125
133
|
/**
|
|
126
134
|
* Time Complexity: O(log n) - Average case for a balanced tree.
|
|
127
135
|
* Space Complexity: O(1) - Constant space is used.
|
|
@@ -115,12 +115,14 @@ export class BST extends BinaryTree {
|
|
|
115
115
|
return exemplar instanceof BSTNode;
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
|
-
* The function `exemplarToNode` takes an exemplar and returns a
|
|
119
|
-
*
|
|
120
|
-
* @param exemplar - The `exemplar` parameter is of type `BTNodeExemplar<K, V, N
|
|
121
|
-
* @
|
|
118
|
+
* The function `exemplarToNode` takes an exemplar and returns a node if the exemplar is valid,
|
|
119
|
+
* otherwise it returns undefined.
|
|
120
|
+
* @param exemplar - The `exemplar` parameter is of type `BTNodeExemplar<K, V, N>`, where:
|
|
121
|
+
* @param {V} [value] - The `value` parameter is an optional value that can be passed to the
|
|
122
|
+
* `exemplarToNode` function. It represents the value associated with the exemplar node.
|
|
123
|
+
* @returns a node of type N or undefined.
|
|
122
124
|
*/
|
|
123
|
-
exemplarToNode(exemplar) {
|
|
125
|
+
exemplarToNode(exemplar, value) {
|
|
124
126
|
let node;
|
|
125
127
|
if (exemplar === null || exemplar === undefined) {
|
|
126
128
|
return;
|
|
@@ -138,7 +140,7 @@ export class BST extends BinaryTree {
|
|
|
138
140
|
}
|
|
139
141
|
}
|
|
140
142
|
else if (this.isNotNodeInstance(exemplar)) {
|
|
141
|
-
node = this.createNode(exemplar);
|
|
143
|
+
node = this.createNode(exemplar, value);
|
|
142
144
|
}
|
|
143
145
|
else {
|
|
144
146
|
return;
|
|
@@ -153,14 +155,16 @@ export class BST extends BinaryTree {
|
|
|
153
155
|
* Time Complexity: O(log n) - Average case for a balanced tree. In the worst case (unbalanced tree), it can be O(n).
|
|
154
156
|
* Space Complexity: O(1) - Constant space is used.
|
|
155
157
|
*
|
|
156
|
-
* The `add` function adds a new node to a binary
|
|
157
|
-
*
|
|
158
|
-
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can
|
|
159
|
-
* @
|
|
160
|
-
*
|
|
158
|
+
* The `add` function adds a new node to a binary tree, updating the value if the key already exists
|
|
159
|
+
* or inserting a new node if the key is unique.
|
|
160
|
+
* @param keyOrNodeOrEntry - The `keyOrNodeOrEntry` parameter can accept three types of values:
|
|
161
|
+
* @param {V} [value] - The `value` parameter represents the value associated with the key that is
|
|
162
|
+
* being added to the binary tree.
|
|
163
|
+
* @returns The method `add` returns either the newly added node (`newNode`) or `undefined` if the
|
|
164
|
+
* node was not added.
|
|
161
165
|
*/
|
|
162
|
-
add(keyOrNodeOrEntry) {
|
|
163
|
-
const newNode = this.exemplarToNode(keyOrNodeOrEntry);
|
|
166
|
+
add(keyOrNodeOrEntry, value) {
|
|
167
|
+
const newNode = this.exemplarToNode(keyOrNodeOrEntry, value);
|
|
164
168
|
if (newNode === undefined)
|
|
165
169
|
return;
|
|
166
170
|
if (this.root === undefined) {
|
|
@@ -210,23 +214,32 @@ export class BST extends BinaryTree {
|
|
|
210
214
|
* Time Complexity: O(k log n) - Adding each element individually in a balanced tree.
|
|
211
215
|
* Space Complexity: O(k) - Additional space is required for the sorted array.
|
|
212
216
|
*
|
|
213
|
-
* The `addMany` function in TypeScript adds multiple nodes to a binary tree,
|
|
214
|
-
*
|
|
215
|
-
* @param keysOrNodesOrEntries - An iterable containing keys, nodes, or entries to be added to
|
|
216
|
-
* binary tree.
|
|
217
|
-
* @param [
|
|
218
|
-
*
|
|
217
|
+
* The `addMany` function in TypeScript adds multiple keys or nodes to a binary tree, optionally
|
|
218
|
+
* balancing the tree after each addition.
|
|
219
|
+
* @param keysOrNodesOrEntries - An iterable containing the keys, nodes, or entries to be added to
|
|
220
|
+
* the binary tree.
|
|
221
|
+
* @param [values] - An optional iterable of values to be associated with the keys or nodes being
|
|
222
|
+
* added. If provided, the values will be assigned to the corresponding keys or nodes in the same
|
|
223
|
+
* order. If not provided, undefined will be assigned as the value for each key or node.
|
|
224
|
+
* @param [isBalanceAdd=true] - A boolean flag indicating whether the add operation should be
|
|
225
|
+
* balanced or not. If set to true, the add operation will be balanced using a binary search tree
|
|
226
|
+
* algorithm. If set to false, the add operation will not be balanced and the elements will be added
|
|
227
|
+
* in the order they appear in the input.
|
|
219
228
|
* @param iterationType - The `iterationType` parameter is an optional parameter that specifies the
|
|
220
|
-
* type of iteration to use when adding multiple keys or nodes
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
* @returns The `addMany` function returns an array of `N` or `undefined` values.
|
|
229
|
+
* type of iteration to use when adding multiple keys or nodes. It has a default value of
|
|
230
|
+
* `this.iterationType`, which suggests that it is a property of the current object.
|
|
231
|
+
* @returns The function `addMany` returns an array of nodes (`N`) or `undefined` values.
|
|
224
232
|
*/
|
|
225
|
-
addMany(keysOrNodesOrEntries, isBalanceAdd = true, iterationType = this.iterationType) {
|
|
233
|
+
addMany(keysOrNodesOrEntries, values, isBalanceAdd = true, iterationType = this.iterationType) {
|
|
226
234
|
const inserted = [];
|
|
235
|
+
let valuesIterator;
|
|
236
|
+
if (values) {
|
|
237
|
+
valuesIterator = values[Symbol.iterator]();
|
|
238
|
+
}
|
|
227
239
|
if (!isBalanceAdd) {
|
|
228
240
|
for (const kve of keysOrNodesOrEntries) {
|
|
229
|
-
const
|
|
241
|
+
const value = valuesIterator?.next().value;
|
|
242
|
+
const nn = this.add(kve, value);
|
|
230
243
|
inserted.push(nn);
|
|
231
244
|
}
|
|
232
245
|
return inserted;
|
|
@@ -240,7 +253,6 @@ export class BST extends BinaryTree {
|
|
|
240
253
|
for (const kve of keysOrNodesOrEntries) {
|
|
241
254
|
isRealBTNExemplar(kve) && realBTNExemplars.push(kve);
|
|
242
255
|
}
|
|
243
|
-
// TODO this addMany function is inefficient, it should be optimized
|
|
244
256
|
let sorted = [];
|
|
245
257
|
sorted = realBTNExemplars.sort((a, b) => {
|
|
246
258
|
let aR, bR;
|