data-structure-typed 1.54.2 → 2.0.0
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/LICENSE +2 -2
- package/README.md +14 -1
- package/README_zh-CN.md +1 -1
- package/benchmark/report.html +28 -1
- package/benchmark/report.json +327 -18
- package/dist/cjs/data-structures/base/iterable-element-base.d.ts +14 -40
- package/dist/cjs/data-structures/base/iterable-element-base.js +14 -11
- package/dist/cjs/data-structures/base/iterable-element-base.js.map +1 -1
- package/dist/cjs/data-structures/base/linear-base.d.ts +277 -0
- package/dist/cjs/data-structures/base/linear-base.js +553 -0
- package/dist/cjs/data-structures/base/linear-base.js.map +1 -0
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js +8 -7
- package/dist/cjs/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.d.ts +23 -19
- package/dist/cjs/data-structures/binary-tree/avl-tree-multi-map.js +51 -38
- 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 +89 -21
- package/dist/cjs/data-structures/binary-tree/avl-tree.js +76 -8
- package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +173 -225
- package/dist/cjs/data-structures/binary-tree/binary-tree.js +244 -149
- package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/bst.d.ts +62 -56
- package/dist/cjs/data-structures/binary-tree/bst.js +89 -133
- package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/red-black-tree.d.ts +19 -25
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js +7 -13
- package/dist/cjs/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-counter.d.ts +19 -19
- package/dist/cjs/data-structures/binary-tree/tree-counter.js +12 -12
- package/dist/cjs/data-structures/binary-tree/tree-counter.js.map +1 -1
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.d.ts +186 -25
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js +211 -41
- package/dist/cjs/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/cjs/data-structures/graph/abstract-graph.js +2 -2
- package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/cjs/data-structures/heap/heap.d.ts +3 -11
- package/dist/cjs/data-structures/heap/heap.js +0 -10
- package/dist/cjs/data-structures/heap/heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/max-heap.d.ts +2 -2
- package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
- package/dist/cjs/data-structures/heap/min-heap.d.ts +2 -2
- package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +131 -146
- package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +79 -75
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js +217 -169
- package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
- package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
- package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/priority-queue/priority-queue.d.ts +2 -2
- package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/cjs/data-structures/queue/deque.d.ts +130 -91
- package/dist/cjs/data-structures/queue/deque.js +269 -169
- package/dist/cjs/data-structures/queue/deque.js.map +1 -1
- package/dist/cjs/data-structures/queue/queue.d.ts +84 -40
- package/dist/cjs/data-structures/queue/queue.js +134 -50
- package/dist/cjs/data-structures/queue/queue.js.map +1 -1
- package/dist/cjs/data-structures/stack/stack.d.ts +3 -11
- package/dist/cjs/data-structures/stack/stack.js +0 -10
- package/dist/cjs/data-structures/stack/stack.js.map +1 -1
- package/dist/cjs/data-structures/trie/trie.d.ts +4 -3
- package/dist/cjs/data-structures/trie/trie.js +3 -0
- package/dist/cjs/data-structures/trie/trie.js.map +1 -1
- package/dist/cjs/types/data-structures/base/base.d.ts +9 -4
- package/dist/cjs/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
- package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/cjs/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
- package/dist/cjs/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
- package/dist/cjs/types/data-structures/queue/deque.d.ts +2 -3
- package/dist/cjs/types/data-structures/queue/queue.d.ts +2 -2
- package/dist/cjs/utils/utils.d.ts +2 -2
- package/dist/esm/data-structures/base/iterable-element-base.d.ts +14 -40
- package/dist/esm/data-structures/base/iterable-element-base.js +14 -11
- package/dist/esm/data-structures/base/iterable-element-base.js.map +1 -1
- package/dist/esm/data-structures/base/linear-base.d.ts +277 -0
- package/dist/esm/data-structures/base/linear-base.js +549 -0
- package/dist/esm/data-structures/base/linear-base.js.map +1 -0
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.d.ts +21 -20
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.js +9 -8
- package/dist/esm/data-structures/binary-tree/avl-tree-counter.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.d.ts +23 -19
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js +52 -38
- package/dist/esm/data-structures/binary-tree/avl-tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/avl-tree.d.ts +89 -21
- package/dist/esm/data-structures/binary-tree/avl-tree.js +77 -9
- package/dist/esm/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/binary-tree.d.ts +173 -225
- package/dist/esm/data-structures/binary-tree/binary-tree.js +248 -153
- package/dist/esm/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/bst.d.ts +62 -56
- package/dist/esm/data-structures/binary-tree/bst.js +90 -132
- package/dist/esm/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/red-black-tree.d.ts +19 -25
- package/dist/esm/data-structures/binary-tree/red-black-tree.js +8 -14
- package/dist/esm/data-structures/binary-tree/red-black-tree.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-counter.d.ts +19 -19
- package/dist/esm/data-structures/binary-tree/tree-counter.js +13 -13
- package/dist/esm/data-structures/binary-tree/tree-counter.js.map +1 -1
- package/dist/esm/data-structures/binary-tree/tree-multi-map.d.ts +186 -25
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js +212 -41
- package/dist/esm/data-structures/binary-tree/tree-multi-map.js.map +1 -1
- package/dist/esm/data-structures/graph/abstract-graph.js +2 -2
- package/dist/esm/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/esm/data-structures/heap/heap.d.ts +3 -11
- package/dist/esm/data-structures/heap/heap.js +0 -10
- package/dist/esm/data-structures/heap/heap.js.map +1 -1
- package/dist/esm/data-structures/heap/max-heap.d.ts +2 -2
- package/dist/esm/data-structures/heap/max-heap.js.map +1 -1
- package/dist/esm/data-structures/heap/min-heap.d.ts +2 -2
- package/dist/esm/data-structures/heap/min-heap.js.map +1 -1
- package/dist/esm/data-structures/linked-list/doubly-linked-list.d.ts +65 -94
- package/dist/esm/data-structures/linked-list/doubly-linked-list.js +132 -148
- package/dist/esm/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/esm/data-structures/linked-list/singly-linked-list.d.ts +79 -75
- package/dist/esm/data-structures/linked-list/singly-linked-list.js +217 -170
- package/dist/esm/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/max-priority-queue.d.ts +2 -2
- package/dist/esm/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/min-priority-queue.d.ts +2 -2
- package/dist/esm/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/esm/data-structures/priority-queue/priority-queue.d.ts +2 -2
- package/dist/esm/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/esm/data-structures/queue/deque.d.ts +130 -91
- package/dist/esm/data-structures/queue/deque.js +269 -169
- package/dist/esm/data-structures/queue/deque.js.map +1 -1
- package/dist/esm/data-structures/queue/queue.d.ts +84 -40
- package/dist/esm/data-structures/queue/queue.js +135 -51
- package/dist/esm/data-structures/queue/queue.js.map +1 -1
- package/dist/esm/data-structures/stack/stack.d.ts +3 -11
- package/dist/esm/data-structures/stack/stack.js +0 -10
- package/dist/esm/data-structures/stack/stack.js.map +1 -1
- package/dist/esm/data-structures/trie/trie.d.ts +4 -3
- package/dist/esm/data-structures/trie/trie.js +3 -0
- package/dist/esm/data-structures/trie/trie.js.map +1 -1
- package/dist/esm/types/data-structures/base/base.d.ts +9 -4
- package/dist/esm/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +1 -1
- package/dist/esm/types/data-structures/binary-tree/binary-tree.d.ts +1 -0
- package/dist/esm/types/data-structures/binary-tree/bst.d.ts +1 -1
- package/dist/esm/types/data-structures/binary-tree/tree-multi-map.d.ts +1 -1
- package/dist/esm/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -2
- package/dist/esm/types/data-structures/linked-list/singly-linked-list.d.ts +2 -2
- package/dist/esm/types/data-structures/queue/deque.d.ts +2 -3
- package/dist/esm/types/data-structures/queue/queue.d.ts +2 -2
- package/dist/esm/utils/utils.d.ts +2 -2
- package/dist/umd/data-structure-typed.js +1548 -920
- package/dist/umd/data-structure-typed.min.js +5 -12
- package/dist/umd/data-structure-typed.min.js.map +1 -1
- package/package.json +7 -7
- package/src/data-structures/base/iterable-element-base.ts +29 -20
- package/src/data-structures/base/linear-base.ts +649 -0
- package/src/data-structures/binary-tree/avl-tree-counter.ts +30 -23
- package/src/data-structures/binary-tree/avl-tree-multi-map.ts +74 -49
- package/src/data-structures/binary-tree/avl-tree.ts +99 -29
- package/src/data-structures/binary-tree/binary-tree.ts +474 -257
- package/src/data-structures/binary-tree/bst.ts +150 -152
- package/src/data-structures/binary-tree/red-black-tree.ts +27 -35
- package/src/data-structures/binary-tree/tree-counter.ts +33 -27
- package/src/data-structures/binary-tree/tree-multi-map.ts +235 -53
- package/src/data-structures/graph/abstract-graph.ts +2 -2
- package/src/data-structures/heap/heap.ts +3 -14
- package/src/data-structures/heap/max-heap.ts +2 -2
- package/src/data-structures/heap/min-heap.ts +2 -2
- package/src/data-structures/linked-list/doubly-linked-list.ts +144 -160
- package/src/data-structures/linked-list/singly-linked-list.ts +241 -185
- package/src/data-structures/priority-queue/max-priority-queue.ts +2 -5
- package/src/data-structures/priority-queue/min-priority-queue.ts +2 -5
- package/src/data-structures/priority-queue/priority-queue.ts +2 -2
- package/src/data-structures/queue/deque.ts +286 -183
- package/src/data-structures/queue/queue.ts +149 -63
- package/src/data-structures/stack/stack.ts +3 -18
- package/src/data-structures/trie/trie.ts +7 -3
- package/src/types/data-structures/base/base.ts +17 -8
- package/src/types/data-structures/binary-tree/avl-tree-multi-map.ts +1 -1
- package/src/types/data-structures/binary-tree/binary-tree.ts +1 -0
- package/src/types/data-structures/binary-tree/bst.ts +1 -1
- package/src/types/data-structures/binary-tree/tree-multi-map.ts +1 -1
- package/src/types/data-structures/linked-list/doubly-linked-list.ts +2 -2
- package/src/types/data-structures/linked-list/singly-linked-list.ts +2 -2
- package/src/types/data-structures/queue/deque.ts +2 -3
- package/src/types/data-structures/queue/queue.ts +2 -2
- package/src/utils/utils.ts +2 -2
- package/test/integration/all-in-one.test.ts +1 -1
- package/test/integration/avl-tree.test.ts +1 -1
- package/test/integration/bst.test.ts +2 -2
- package/test/integration/compile.mjs +21 -21
- package/test/performance/data-structures/binary-tree/avl-tree.test.mjs +71 -0
- package/test/performance/data-structures/binary-tree/red-black-tree.test.mjs +81 -0
- package/test/performance/{reportor.js → reportor.mjs} +264 -8
- package/test/performance/reportor.ts +1 -1
- package/test/unit/data-structures/binary-tree/avl-tree-counter.test.ts +7 -7
- package/test/unit/data-structures/binary-tree/avl-tree-multi-map.test.ts +172 -5
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +72 -4
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +132 -82
- package/test/unit/data-structures/binary-tree/bst.test.ts +12 -12
- package/test/unit/data-structures/binary-tree/red-black-tree.test.ts +5 -13
- package/test/unit/data-structures/binary-tree/tree-counter.test.ts +4 -4
- package/test/unit/data-structures/binary-tree/tree-multi-map.test.ts +168 -10
- package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +135 -27
- package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +111 -11
- package/test/unit/data-structures/queue/deque.test.ts +241 -60
- package/test/unit/data-structures/queue/queue.test.ts +118 -19
- package/test/unit/unrestricted-interconversion.test.ts +1 -1
- package/test/utils/json2html.ts +0 -154
- package/test/performance/data-structures/binary-tree/avl-tree.test.js +0 -45
- /package/test/performance/data-structures/binary-tree/{rb-tree.test.ts → red-black-tree.test.ts} +0 -0
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
8
|
import { BST, BSTNode } from './bst';
|
|
9
|
-
import type { AVLTreeOptions, BinaryTreeDeleteResult, BSTNOptKeyOrNode,
|
|
9
|
+
import type { AVLTreeOptions, BinaryTreeDeleteResult, BSTNOptKeyOrNode, EntryCallback } from '../../types';
|
|
10
10
|
import { IBinaryTree } from '../../interfaces';
|
|
11
11
|
export declare class AVLTreeNode<K = any, V = any> extends BSTNode<K, V> {
|
|
12
|
+
parent?: AVLTreeNode<K, V>;
|
|
12
13
|
/**
|
|
13
14
|
* This TypeScript constructor function initializes an instance with a key and an optional value.
|
|
14
15
|
* @param {K} key - The `key` parameter is typically used to uniquely identify an object or element
|
|
@@ -19,13 +20,12 @@ export declare class AVLTreeNode<K = any, V = any> extends BSTNode<K, V> {
|
|
|
19
20
|
* default to `undefined`.
|
|
20
21
|
*/
|
|
21
22
|
constructor(key: K, value?: V);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
set right(v: OptNodeOrNull<AVLTreeNode<K, V>>);
|
|
23
|
+
_left?: AVLTreeNode<K, V> | null | undefined;
|
|
24
|
+
get left(): AVLTreeNode<K, V> | null | undefined;
|
|
25
|
+
set left(v: AVLTreeNode<K, V> | null | undefined);
|
|
26
|
+
_right?: AVLTreeNode<K, V> | null | undefined;
|
|
27
|
+
get right(): AVLTreeNode<K, V> | null | undefined;
|
|
28
|
+
set right(v: AVLTreeNode<K, V> | null | undefined);
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
* 1. Height-Balanced: Each node's left and right subtrees differ in height by no more than one.
|
|
@@ -35,20 +35,85 @@ export declare class AVLTreeNode<K = any, V = any> extends BSTNode<K, V> {
|
|
|
35
35
|
* 5. Efficient Lookups: Offers O(log n) search time, where 'n' is the number of nodes, due to its balanced nature.
|
|
36
36
|
* 6. Complex Insertions and Deletions: Due to rebalancing, these operations are more complex than in a regular BST.
|
|
37
37
|
* 7. Path Length: The path length from the root to any leaf is longer compared to an unbalanced BST, but shorter than a linear chain of nodes.
|
|
38
|
+
* @example
|
|
39
|
+
* // Find elements in a range
|
|
40
|
+
* // In interval queries, AVL trees, with their strictly balanced structure and lower height, offer better query efficiency, making them ideal for frequent and high-performance interval queries. In contrast, Red-Black trees, with lower update costs, are more suitable for scenarios involving frequent insertions and deletions where the requirements for interval queries are less demanding.
|
|
41
|
+
* type Datum = { timestamp: Date; temperature: number };
|
|
42
|
+
* // Fixed dataset of CPU temperature readings
|
|
43
|
+
* const cpuData: Datum[] = [
|
|
44
|
+
* { timestamp: new Date('2024-12-02T00:00:00'), temperature: 55.1 },
|
|
45
|
+
* { timestamp: new Date('2024-12-02T00:01:00'), temperature: 56.3 },
|
|
46
|
+
* { timestamp: new Date('2024-12-02T00:02:00'), temperature: 54.8 },
|
|
47
|
+
* { timestamp: new Date('2024-12-02T00:03:00'), temperature: 57.2 },
|
|
48
|
+
* { timestamp: new Date('2024-12-02T00:04:00'), temperature: 58.0 },
|
|
49
|
+
* { timestamp: new Date('2024-12-02T00:05:00'), temperature: 59.4 },
|
|
50
|
+
* { timestamp: new Date('2024-12-02T00:06:00'), temperature: 60.1 },
|
|
51
|
+
* { timestamp: new Date('2024-12-02T00:07:00'), temperature: 61.3 },
|
|
52
|
+
* { timestamp: new Date('2024-12-02T00:08:00'), temperature: 62.0 },
|
|
53
|
+
* { timestamp: new Date('2024-12-02T00:09:00'), temperature: 63.5 },
|
|
54
|
+
* { timestamp: new Date('2024-12-02T00:10:00'), temperature: 64.0 },
|
|
55
|
+
* { timestamp: new Date('2024-12-02T00:11:00'), temperature: 62.8 },
|
|
56
|
+
* { timestamp: new Date('2024-12-02T00:12:00'), temperature: 61.5 },
|
|
57
|
+
* { timestamp: new Date('2024-12-02T00:13:00'), temperature: 60.2 },
|
|
58
|
+
* { timestamp: new Date('2024-12-02T00:14:00'), temperature: 59.8 },
|
|
59
|
+
* { timestamp: new Date('2024-12-02T00:15:00'), temperature: 58.6 },
|
|
60
|
+
* { timestamp: new Date('2024-12-02T00:16:00'), temperature: 57.4 },
|
|
61
|
+
* { timestamp: new Date('2024-12-02T00:17:00'), temperature: 56.2 },
|
|
62
|
+
* { timestamp: new Date('2024-12-02T00:18:00'), temperature: 55.7 },
|
|
63
|
+
* { timestamp: new Date('2024-12-02T00:19:00'), temperature: 54.5 },
|
|
64
|
+
* { timestamp: new Date('2024-12-02T00:20:00'), temperature: 53.2 },
|
|
65
|
+
* { timestamp: new Date('2024-12-02T00:21:00'), temperature: 52.8 },
|
|
66
|
+
* { timestamp: new Date('2024-12-02T00:22:00'), temperature: 51.9 },
|
|
67
|
+
* { timestamp: new Date('2024-12-02T00:23:00'), temperature: 50.5 },
|
|
68
|
+
* { timestamp: new Date('2024-12-02T00:24:00'), temperature: 49.8 },
|
|
69
|
+
* { timestamp: new Date('2024-12-02T00:25:00'), temperature: 48.7 },
|
|
70
|
+
* { timestamp: new Date('2024-12-02T00:26:00'), temperature: 47.5 },
|
|
71
|
+
* { timestamp: new Date('2024-12-02T00:27:00'), temperature: 46.3 },
|
|
72
|
+
* { timestamp: new Date('2024-12-02T00:28:00'), temperature: 45.9 },
|
|
73
|
+
* { timestamp: new Date('2024-12-02T00:29:00'), temperature: 45.0 }
|
|
74
|
+
* ];
|
|
75
|
+
*
|
|
76
|
+
* // Create an AVL tree to store CPU temperature data
|
|
77
|
+
* const cpuTemperatureTree = new AVLTree<Date, number, Datum>(cpuData, {
|
|
78
|
+
* toEntryFn: ({ timestamp, temperature }) => [timestamp, temperature]
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* // Query a specific time range (e.g., from 00:05 to 00:15)
|
|
82
|
+
* const rangeStart = new Date('2024-12-02T00:05:00');
|
|
83
|
+
* const rangeEnd = new Date('2024-12-02T00:15:00');
|
|
84
|
+
* const rangeResults = cpuTemperatureTree.rangeSearch([rangeStart, rangeEnd], node => ({
|
|
85
|
+
* minute: node ? node.key.getMinutes() : 0,
|
|
86
|
+
* temperature: cpuTemperatureTree.get(node ? node.key : undefined)
|
|
87
|
+
* }));
|
|
88
|
+
*
|
|
89
|
+
* console.log(rangeResults); // [
|
|
90
|
+
* // { minute: 5, temperature: 59.4 },
|
|
91
|
+
* // { minute: 6, temperature: 60.1 },
|
|
92
|
+
* // { minute: 7, temperature: 61.3 },
|
|
93
|
+
* // { minute: 8, temperature: 62 },
|
|
94
|
+
* // { minute: 9, temperature: 63.5 },
|
|
95
|
+
* // { minute: 10, temperature: 64 },
|
|
96
|
+
* // { minute: 11, temperature: 62.8 },
|
|
97
|
+
* // { minute: 12, temperature: 61.5 },
|
|
98
|
+
* // { minute: 13, temperature: 60.2 },
|
|
99
|
+
* // { minute: 14, temperature: 59.8 },
|
|
100
|
+
* // { minute: 15, temperature: 58.6 }
|
|
101
|
+
* // ]
|
|
38
102
|
*/
|
|
39
103
|
export declare class AVLTree<K = any, V = any, R = object, MK = any, MV = any, MR = object> extends BST<K, V, R, MK, MV, MR> implements IBinaryTree<K, V, R, MK, MV, MR> {
|
|
40
104
|
/**
|
|
41
105
|
* This TypeScript constructor initializes an AVLTree with keys, nodes, entries, or raw data provided
|
|
42
106
|
* in an iterable format.
|
|
43
107
|
* @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
|
|
44
|
-
* iterable that can contain either `
|
|
108
|
+
* iterable that can contain either `
|
|
109
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined ` objects or `R` objects. It is
|
|
45
110
|
* used to initialize the AVLTree with key-value pairs or raw data entries. If provided
|
|
46
111
|
* @param [options] - The `options` parameter in the constructor is of type `AVLTreeOptions<K, V,
|
|
47
112
|
* R>`. It is an optional parameter that allows you to specify additional options for configuring the
|
|
48
113
|
* AVL tree. These options could include things like custom comparators, initial capacity, or any
|
|
49
114
|
* other configuration settings specific
|
|
50
115
|
*/
|
|
51
|
-
constructor(keysNodesEntriesOrRaws?: Iterable<
|
|
116
|
+
constructor(keysNodesEntriesOrRaws?: Iterable<K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | R>, options?: AVLTreeOptions<K, V, R>);
|
|
52
117
|
/**
|
|
53
118
|
* Time Complexity: O(1)
|
|
54
119
|
* Space Complexity: O(1)
|
|
@@ -78,39 +143,41 @@ export declare class AVLTree<K = any, V = any, R = object, MK = any, MV = any, M
|
|
|
78
143
|
* Space Complexity: O(1)
|
|
79
144
|
*
|
|
80
145
|
* The function checks if the input is an instance of AVLTreeNode.
|
|
81
|
-
* @param {
|
|
82
|
-
* `keyNodeOrEntry` can be of type `R` or `
|
|
146
|
+
* @param {K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
147
|
+
* `keyNodeOrEntry` can be of type `R` or `
|
|
148
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
|
|
83
149
|
* @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
|
|
84
150
|
* an instance of the `AVLTreeNode` class.
|
|
85
151
|
*/
|
|
86
|
-
isNode(keyNodeOrEntry:
|
|
152
|
+
isNode(keyNodeOrEntry: K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): keyNodeOrEntry is AVLTreeNode<K, V>;
|
|
87
153
|
/**
|
|
88
154
|
* Time Complexity: O(log n)
|
|
89
155
|
* Space Complexity: O(log n)
|
|
90
156
|
*
|
|
91
157
|
* The function overrides the add method of a class and inserts a key-value pair into a data
|
|
92
158
|
* structure, then balances the path.
|
|
93
|
-
* @param {
|
|
94
|
-
* `keyNodeOrEntry` can accept values of type `R`, `
|
|
159
|
+
* @param { K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
160
|
+
* `keyNodeOrEntry` can accept values of type `R`, `
|
|
161
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `
|
|
95
162
|
* @param {V} [value] - The `value` parameter is an optional value that you want to associate with
|
|
96
163
|
* the key or node being added to the data structure.
|
|
97
164
|
* @returns The method is returning a boolean value.
|
|
98
165
|
*/
|
|
99
|
-
add(keyNodeOrEntry:
|
|
166
|
+
add(keyNodeOrEntry: K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, value?: V): boolean;
|
|
100
167
|
/**
|
|
101
168
|
* Time Complexity: O(log n)
|
|
102
169
|
* Space Complexity: O(log n)
|
|
103
170
|
*
|
|
104
171
|
* The function overrides the delete method in a TypeScript class, performs deletion, and then
|
|
105
172
|
* balances the tree if necessary.
|
|
106
|
-
* @param {
|
|
173
|
+
* @param { K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The `keyNodeOrEntry`
|
|
107
174
|
* parameter in the `override delete` method can be one of the following types:
|
|
108
175
|
* @returns The `delete` method is being overridden in this code snippet. It first calls the `delete`
|
|
109
176
|
* method from the superclass (presumably a parent class) with the provided `predicate`, which could
|
|
110
177
|
* be a key, node, entry, or a custom predicate. The result of this deletion operation is stored in
|
|
111
178
|
* `deletedResults`, which is an array of `BinaryTreeDeleteResult` objects.
|
|
112
179
|
*/
|
|
113
|
-
delete(keyNodeOrEntry:
|
|
180
|
+
delete(keyNodeOrEntry: K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): BinaryTreeDeleteResult<AVLTreeNode<K, V>>[];
|
|
114
181
|
/**
|
|
115
182
|
* Time Complexity: O(n)
|
|
116
183
|
* Space Complexity: O(n)
|
|
@@ -213,10 +280,11 @@ export declare class AVLTree<K = any, V = any, R = object, MK = any, MV = any, M
|
|
|
213
280
|
*
|
|
214
281
|
* The `_balancePath` function is used to update the heights of nodes and perform rotation operations
|
|
215
282
|
* to restore balance in an AVL tree after inserting a node.
|
|
216
|
-
* @param {
|
|
217
|
-
* `
|
|
283
|
+
* @param { K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } node - The `node` parameter can be of type `R` or
|
|
284
|
+
* `
|
|
285
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
|
|
218
286
|
*/
|
|
219
|
-
protected _balancePath(node:
|
|
287
|
+
protected _balancePath(node: K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): void;
|
|
220
288
|
/**
|
|
221
289
|
* Time Complexity: O(1)
|
|
222
290
|
* Space Complexity: O(1)
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { BST, BSTNode } from './bst';
|
|
9
9
|
export class AVLTreeNode extends BSTNode {
|
|
10
|
+
parent = undefined;
|
|
10
11
|
/**
|
|
11
12
|
* This TypeScript constructor function initializes an instance with a key and an optional value.
|
|
12
13
|
* @param {K} key - The `key` parameter is typically used to uniquely identify an object or element
|
|
@@ -19,7 +20,6 @@ export class AVLTreeNode extends BSTNode {
|
|
|
19
20
|
constructor(key, value) {
|
|
20
21
|
super(key, value);
|
|
21
22
|
}
|
|
22
|
-
parent = undefined;
|
|
23
23
|
_left = undefined;
|
|
24
24
|
get left() {
|
|
25
25
|
return this._left;
|
|
@@ -49,13 +49,78 @@ export class AVLTreeNode extends BSTNode {
|
|
|
49
49
|
* 5. Efficient Lookups: Offers O(log n) search time, where 'n' is the number of nodes, due to its balanced nature.
|
|
50
50
|
* 6. Complex Insertions and Deletions: Due to rebalancing, these operations are more complex than in a regular BST.
|
|
51
51
|
* 7. Path Length: The path length from the root to any leaf is longer compared to an unbalanced BST, but shorter than a linear chain of nodes.
|
|
52
|
+
* @example
|
|
53
|
+
* // Find elements in a range
|
|
54
|
+
* // In interval queries, AVL trees, with their strictly balanced structure and lower height, offer better query efficiency, making them ideal for frequent and high-performance interval queries. In contrast, Red-Black trees, with lower update costs, are more suitable for scenarios involving frequent insertions and deletions where the requirements for interval queries are less demanding.
|
|
55
|
+
* type Datum = { timestamp: Date; temperature: number };
|
|
56
|
+
* // Fixed dataset of CPU temperature readings
|
|
57
|
+
* const cpuData: Datum[] = [
|
|
58
|
+
* { timestamp: new Date('2024-12-02T00:00:00'), temperature: 55.1 },
|
|
59
|
+
* { timestamp: new Date('2024-12-02T00:01:00'), temperature: 56.3 },
|
|
60
|
+
* { timestamp: new Date('2024-12-02T00:02:00'), temperature: 54.8 },
|
|
61
|
+
* { timestamp: new Date('2024-12-02T00:03:00'), temperature: 57.2 },
|
|
62
|
+
* { timestamp: new Date('2024-12-02T00:04:00'), temperature: 58.0 },
|
|
63
|
+
* { timestamp: new Date('2024-12-02T00:05:00'), temperature: 59.4 },
|
|
64
|
+
* { timestamp: new Date('2024-12-02T00:06:00'), temperature: 60.1 },
|
|
65
|
+
* { timestamp: new Date('2024-12-02T00:07:00'), temperature: 61.3 },
|
|
66
|
+
* { timestamp: new Date('2024-12-02T00:08:00'), temperature: 62.0 },
|
|
67
|
+
* { timestamp: new Date('2024-12-02T00:09:00'), temperature: 63.5 },
|
|
68
|
+
* { timestamp: new Date('2024-12-02T00:10:00'), temperature: 64.0 },
|
|
69
|
+
* { timestamp: new Date('2024-12-02T00:11:00'), temperature: 62.8 },
|
|
70
|
+
* { timestamp: new Date('2024-12-02T00:12:00'), temperature: 61.5 },
|
|
71
|
+
* { timestamp: new Date('2024-12-02T00:13:00'), temperature: 60.2 },
|
|
72
|
+
* { timestamp: new Date('2024-12-02T00:14:00'), temperature: 59.8 },
|
|
73
|
+
* { timestamp: new Date('2024-12-02T00:15:00'), temperature: 58.6 },
|
|
74
|
+
* { timestamp: new Date('2024-12-02T00:16:00'), temperature: 57.4 },
|
|
75
|
+
* { timestamp: new Date('2024-12-02T00:17:00'), temperature: 56.2 },
|
|
76
|
+
* { timestamp: new Date('2024-12-02T00:18:00'), temperature: 55.7 },
|
|
77
|
+
* { timestamp: new Date('2024-12-02T00:19:00'), temperature: 54.5 },
|
|
78
|
+
* { timestamp: new Date('2024-12-02T00:20:00'), temperature: 53.2 },
|
|
79
|
+
* { timestamp: new Date('2024-12-02T00:21:00'), temperature: 52.8 },
|
|
80
|
+
* { timestamp: new Date('2024-12-02T00:22:00'), temperature: 51.9 },
|
|
81
|
+
* { timestamp: new Date('2024-12-02T00:23:00'), temperature: 50.5 },
|
|
82
|
+
* { timestamp: new Date('2024-12-02T00:24:00'), temperature: 49.8 },
|
|
83
|
+
* { timestamp: new Date('2024-12-02T00:25:00'), temperature: 48.7 },
|
|
84
|
+
* { timestamp: new Date('2024-12-02T00:26:00'), temperature: 47.5 },
|
|
85
|
+
* { timestamp: new Date('2024-12-02T00:27:00'), temperature: 46.3 },
|
|
86
|
+
* { timestamp: new Date('2024-12-02T00:28:00'), temperature: 45.9 },
|
|
87
|
+
* { timestamp: new Date('2024-12-02T00:29:00'), temperature: 45.0 }
|
|
88
|
+
* ];
|
|
89
|
+
*
|
|
90
|
+
* // Create an AVL tree to store CPU temperature data
|
|
91
|
+
* const cpuTemperatureTree = new AVLTree<Date, number, Datum>(cpuData, {
|
|
92
|
+
* toEntryFn: ({ timestamp, temperature }) => [timestamp, temperature]
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // Query a specific time range (e.g., from 00:05 to 00:15)
|
|
96
|
+
* const rangeStart = new Date('2024-12-02T00:05:00');
|
|
97
|
+
* const rangeEnd = new Date('2024-12-02T00:15:00');
|
|
98
|
+
* const rangeResults = cpuTemperatureTree.rangeSearch([rangeStart, rangeEnd], node => ({
|
|
99
|
+
* minute: node ? node.key.getMinutes() : 0,
|
|
100
|
+
* temperature: cpuTemperatureTree.get(node ? node.key : undefined)
|
|
101
|
+
* }));
|
|
102
|
+
*
|
|
103
|
+
* console.log(rangeResults); // [
|
|
104
|
+
* // { minute: 5, temperature: 59.4 },
|
|
105
|
+
* // { minute: 6, temperature: 60.1 },
|
|
106
|
+
* // { minute: 7, temperature: 61.3 },
|
|
107
|
+
* // { minute: 8, temperature: 62 },
|
|
108
|
+
* // { minute: 9, temperature: 63.5 },
|
|
109
|
+
* // { minute: 10, temperature: 64 },
|
|
110
|
+
* // { minute: 11, temperature: 62.8 },
|
|
111
|
+
* // { minute: 12, temperature: 61.5 },
|
|
112
|
+
* // { minute: 13, temperature: 60.2 },
|
|
113
|
+
* // { minute: 14, temperature: 59.8 },
|
|
114
|
+
* // { minute: 15, temperature: 58.6 }
|
|
115
|
+
* // ]
|
|
52
116
|
*/
|
|
53
117
|
export class AVLTree extends BST {
|
|
54
118
|
/**
|
|
55
119
|
* This TypeScript constructor initializes an AVLTree with keys, nodes, entries, or raw data provided
|
|
56
120
|
* in an iterable format.
|
|
57
121
|
* @param keysNodesEntriesOrRaws - The `keysNodesEntriesOrRaws` parameter in the constructor is an
|
|
58
|
-
* iterable that can contain either `
|
|
122
|
+
* iterable that can contain either `
|
|
123
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined ` objects or `R` objects. It is
|
|
59
124
|
* used to initialize the AVLTree with key-value pairs or raw data entries. If provided
|
|
60
125
|
* @param [options] - The `options` parameter in the constructor is of type `AVLTreeOptions<K, V,
|
|
61
126
|
* R>`. It is an optional parameter that allows you to specify additional options for configuring the
|
|
@@ -107,8 +172,9 @@ export class AVLTree extends BST {
|
|
|
107
172
|
* Space Complexity: O(1)
|
|
108
173
|
*
|
|
109
174
|
* The function checks if the input is an instance of AVLTreeNode.
|
|
110
|
-
* @param {
|
|
111
|
-
* `keyNodeOrEntry` can be of type `R` or `
|
|
175
|
+
* @param {K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
176
|
+
* `keyNodeOrEntry` can be of type `R` or `
|
|
177
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
|
|
112
178
|
* @returns a boolean value indicating whether the input parameter `keyNodeOrEntry` is
|
|
113
179
|
* an instance of the `AVLTreeNode` class.
|
|
114
180
|
*/
|
|
@@ -121,8 +187,9 @@ export class AVLTree extends BST {
|
|
|
121
187
|
*
|
|
122
188
|
* The function overrides the add method of a class and inserts a key-value pair into a data
|
|
123
189
|
* structure, then balances the path.
|
|
124
|
-
* @param {
|
|
125
|
-
* `keyNodeOrEntry` can accept values of type `R`, `
|
|
190
|
+
* @param { K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The parameter
|
|
191
|
+
* `keyNodeOrEntry` can accept values of type `R`, `
|
|
192
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `
|
|
126
193
|
* @param {V} [value] - The `value` parameter is an optional value that you want to associate with
|
|
127
194
|
* the key or node being added to the data structure.
|
|
128
195
|
* @returns The method is returning a boolean value.
|
|
@@ -141,7 +208,7 @@ export class AVLTree extends BST {
|
|
|
141
208
|
*
|
|
142
209
|
* The function overrides the delete method in a TypeScript class, performs deletion, and then
|
|
143
210
|
* balances the tree if necessary.
|
|
144
|
-
* @param {
|
|
211
|
+
* @param { K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } keyNodeOrEntry - The `keyNodeOrEntry`
|
|
145
212
|
* parameter in the `override delete` method can be one of the following types:
|
|
146
213
|
* @returns The `delete` method is being overridden in this code snippet. It first calls the `delete`
|
|
147
214
|
* method from the superclass (presumably a parent class) with the provided `predicate`, which could
|
|
@@ -467,8 +534,9 @@ export class AVLTree extends BST {
|
|
|
467
534
|
*
|
|
468
535
|
* The `_balancePath` function is used to update the heights of nodes and perform rotation operations
|
|
469
536
|
* to restore balance in an AVL tree after inserting a node.
|
|
470
|
-
* @param {
|
|
471
|
-
* `
|
|
537
|
+
* @param { K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined } node - The `node` parameter can be of type `R` or
|
|
538
|
+
* `
|
|
539
|
+
K | AVLTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined `.
|
|
472
540
|
*/
|
|
473
541
|
_balancePath(node) {
|
|
474
542
|
node = this.ensureNode(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avl-tree.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/avl-tree.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"avl-tree.js","sourceRoot":"","sources":["../../../../src/data-structures/binary-tree/avl-tree.ts"],"names":[],"mappings":"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"}
|