max-priority-queue-typed 2.5.2 → 2.5.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.
- package/dist/cjs/index.cjs +103 -16
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs-legacy/index.cjs +103 -16
- package/dist/cjs-legacy/index.cjs.map +1 -1
- package/dist/esm/index.mjs +103 -16
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm-legacy/index.mjs +103 -16
- package/dist/esm-legacy/index.mjs.map +1 -1
- package/dist/types/data-structures/binary-tree/avl-tree.d.ts +50 -2
- package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +56 -0
- package/dist/types/data-structures/binary-tree/binary-tree.d.ts +116 -15
- package/dist/types/data-structures/binary-tree/bst.d.ts +99 -3
- package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +79 -8
- package/dist/types/data-structures/binary-tree/segment-tree.d.ts +24 -0
- package/dist/types/data-structures/binary-tree/tree-map.d.ts +520 -1
- package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +489 -1
- package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +393 -1
- package/dist/types/data-structures/binary-tree/tree-set.d.ts +500 -1
- package/dist/types/data-structures/graph/directed-graph.d.ts +40 -0
- package/dist/types/data-structures/graph/undirected-graph.d.ts +36 -0
- package/dist/types/data-structures/hash/hash-map.d.ts +51 -6
- package/dist/types/data-structures/heap/heap.d.ts +98 -12
- package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +75 -0
- package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +61 -1
- package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +72 -0
- package/dist/types/data-structures/matrix/matrix.d.ts +32 -0
- package/dist/types/data-structures/queue/deque.d.ts +82 -0
- package/dist/types/data-structures/queue/queue.d.ts +61 -0
- package/dist/types/data-structures/stack/stack.d.ts +42 -2
- package/dist/types/data-structures/trie/trie.d.ts +48 -0
- package/dist/types/interfaces/binary-tree.d.ts +2 -3
- package/dist/umd/max-priority-queue-typed.js +103 -16
- package/dist/umd/max-priority-queue-typed.js.map +1 -1
- package/dist/umd/max-priority-queue-typed.min.js +1 -1
- package/dist/umd/max-priority-queue-typed.min.js.map +1 -1
- package/package.json +2 -2
- package/src/data-structures/binary-tree/avl-tree.ts +52 -5
- package/src/data-structures/binary-tree/binary-indexed-tree.ts +56 -0
- package/src/data-structures/binary-tree/binary-tree.ts +167 -81
- package/src/data-structures/binary-tree/bst.ts +101 -7
- package/src/data-structures/binary-tree/red-black-tree.ts +82 -15
- package/src/data-structures/binary-tree/segment-tree.ts +24 -0
- package/src/data-structures/binary-tree/tree-map.ts +540 -3
- package/src/data-structures/binary-tree/tree-multi-map.ts +490 -2
- package/src/data-structures/binary-tree/tree-multi-set.ts +393 -1
- package/src/data-structures/binary-tree/tree-set.ts +520 -3
- package/src/data-structures/graph/directed-graph.ts +41 -1
- package/src/data-structures/graph/undirected-graph.ts +37 -1
- package/src/data-structures/hash/hash-map.ts +67 -12
- package/src/data-structures/heap/heap.ts +107 -19
- package/src/data-structures/linked-list/doubly-linked-list.ts +88 -0
- package/src/data-structures/linked-list/singly-linked-list.ts +61 -1
- package/src/data-structures/linked-list/skip-linked-list.ts +72 -0
- package/src/data-structures/matrix/matrix.ts +32 -0
- package/src/data-structures/queue/deque.ts +85 -0
- package/src/data-structures/queue/queue.ts +73 -0
- package/src/data-structures/stack/stack.ts +45 -5
- package/src/data-structures/trie/trie.ts +48 -0
- package/src/interfaces/binary-tree.ts +1 -9
|
@@ -136,7 +136,7 @@ export declare class BinaryTreeNode<K = any, V = any> {
|
|
|
136
136
|
* node?: BinaryTreeNode<string> | null,
|
|
137
137
|
* conditions?: { [key: string]: boolean }
|
|
138
138
|
* ): string {
|
|
139
|
-
* if (!node)
|
|
139
|
+
* if (!node) throw new Error('Invalid node');
|
|
140
140
|
*
|
|
141
141
|
* // If it's a leaf node, return the decision result
|
|
142
142
|
* if (!node.left && !node.right) return node.key;
|
|
@@ -181,7 +181,7 @@ export declare class BinaryTreeNode<K = any, V = any> {
|
|
|
181
181
|
* case '/':
|
|
182
182
|
* return rightValue !== 0 ? leftValue / rightValue : 0; // Handle division by zero
|
|
183
183
|
* default:
|
|
184
|
-
*
|
|
184
|
+
* throw new Error(`Unsupported operator: ${node.key}`);
|
|
185
185
|
* }
|
|
186
186
|
* }
|
|
187
187
|
*
|
|
@@ -353,7 +353,7 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
353
353
|
isValidKey(key: unknown): key is K;
|
|
354
354
|
/**
|
|
355
355
|
* Adds a new node to the tree.
|
|
356
|
-
* @remarks Time O(
|
|
356
|
+
* @remarks Time O(N) — level-order traversal to find an empty slot. Space O(N) for the BFS queue. BST/Red-Black Tree/AVL Tree subclasses override to O(log N).
|
|
357
357
|
*
|
|
358
358
|
* @param keyNodeOrEntry - The key, node, or entry to add.
|
|
359
359
|
* @returns True if the addition was successful, false otherwise.
|
|
@@ -382,6 +382,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
382
382
|
|
|
383
383
|
|
|
384
384
|
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
|
|
385
389
|
|
|
386
390
|
|
|
387
391
|
|
|
@@ -399,7 +403,7 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
399
403
|
add(keyNodeOrEntry: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): boolean;
|
|
400
404
|
/**
|
|
401
405
|
* Adds or updates a new node to the tree.
|
|
402
|
-
* @remarks Time O(
|
|
406
|
+
* @remarks Time O(N) — level-order traversal to find an empty slot. Space O(N) for the BFS queue. BST/Red-Black Tree/AVL Tree subclasses override to O(log N).
|
|
403
407
|
*
|
|
404
408
|
* @param keyNodeOrEntry - The key, node, or entry to set or update.
|
|
405
409
|
* @param [value] - The value, if providing just a key.
|
|
@@ -434,6 +438,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
434
438
|
|
|
435
439
|
|
|
436
440
|
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
437
445
|
|
|
438
446
|
|
|
439
447
|
|
|
@@ -498,6 +506,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
498
506
|
|
|
499
507
|
|
|
500
508
|
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
|
|
501
513
|
|
|
502
514
|
|
|
503
515
|
|
|
@@ -538,6 +550,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
538
550
|
|
|
539
551
|
|
|
540
552
|
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
|
|
541
557
|
|
|
542
558
|
|
|
543
559
|
|
|
@@ -583,6 +599,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
583
599
|
|
|
584
600
|
|
|
585
601
|
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
586
606
|
|
|
587
607
|
|
|
588
608
|
|
|
@@ -597,19 +617,24 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
597
617
|
*/
|
|
598
618
|
merge(anotherTree: BinaryTree<K, V, R>): void;
|
|
599
619
|
/**
|
|
600
|
-
*
|
|
601
|
-
* @remarks Time O(N)
|
|
620
|
+
* Deletes a node from the tree (internal, returns balancing metadata).
|
|
621
|
+
* @remarks Time O(N) — O(N) to find the node + O(H) for predecessor swap. Space O(1). BST/Red-Black Tree/AVL Tree subclasses override to O(log N).
|
|
622
|
+
* @internal Used by AVL/BST subclasses that need balancing metadata after deletion.
|
|
602
623
|
*
|
|
603
|
-
* @param
|
|
604
|
-
* @
|
|
624
|
+
* @param keyNodeEntryRawOrPredicate - The node to delete.
|
|
625
|
+
* @returns An array containing deletion results with balancing metadata.
|
|
605
626
|
*/
|
|
606
|
-
|
|
627
|
+
protected _deleteInternal(keyNodeEntryRawOrPredicate: BTNRep<K, V, BinaryTreeNode<K, V>> | NodePredicate<BinaryTreeNode<K, V> | null>): BinaryTreeDeleteResult<BinaryTreeNode<K, V>>[];
|
|
607
628
|
/**
|
|
608
629
|
* Deletes a node from the tree.
|
|
609
|
-
* @remarks Time O(
|
|
630
|
+
* @remarks Time O(N) — O(N) to find the node + O(H) for predecessor swap. Space O(1). BST/Red-Black Tree/AVL Tree subclasses override to O(log N).
|
|
610
631
|
*
|
|
611
632
|
* @param keyNodeEntryRawOrPredicate - The node to delete.
|
|
612
|
-
* @returns
|
|
633
|
+
* @returns True if the node was found and deleted, false otherwise.
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
613
638
|
|
|
614
639
|
|
|
615
640
|
|
|
@@ -652,7 +677,7 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
652
677
|
* console.log(tree.has(3)); // false;
|
|
653
678
|
* console.log(tree.size); // 4;
|
|
654
679
|
*/
|
|
655
|
-
delete(keyNodeEntryRawOrPredicate: BTNRep<K, V, BinaryTreeNode<K, V>> | NodePredicate<BinaryTreeNode<K, V> | null>):
|
|
680
|
+
delete(keyNodeEntryRawOrPredicate: BTNRep<K, V, BinaryTreeNode<K, V>> | NodePredicate<BinaryTreeNode<K, V> | null>): boolean;
|
|
656
681
|
/**
|
|
657
682
|
* Search by predicate
|
|
658
683
|
|
|
@@ -676,6 +701,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
676
701
|
|
|
677
702
|
|
|
678
703
|
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
679
708
|
|
|
680
709
|
|
|
681
710
|
|
|
@@ -725,6 +754,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
725
754
|
|
|
726
755
|
|
|
727
756
|
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
728
761
|
|
|
729
762
|
|
|
730
763
|
|
|
@@ -739,7 +772,7 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
739
772
|
getNodes(keyNodeEntryOrPredicate: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BinaryTreeNode<K, V>>, onlyOne?: boolean, startNode?: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, iterationType?: IterationType): BinaryTreeNode<K, V>[];
|
|
740
773
|
/**
|
|
741
774
|
* Gets the first node matching a predicate.
|
|
742
|
-
* @remarks Time O(
|
|
775
|
+
* @remarks Time O(N) via `search`. Space O(H) or O(N). BST/Red-Black Tree/AVL Tree subclasses override to O(log N) for key lookups.
|
|
743
776
|
*
|
|
744
777
|
* @param keyNodeEntryOrPredicate - The key, node, entry, or predicate function to search for.
|
|
745
778
|
* @param [startNode=this._root] - The node to start the search from.
|
|
@@ -773,6 +806,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
773
806
|
|
|
774
807
|
|
|
775
808
|
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
776
813
|
|
|
777
814
|
|
|
778
815
|
|
|
@@ -786,7 +823,7 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
786
823
|
getNode(keyNodeEntryOrPredicate: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BinaryTreeNode<K, V> | null>, startNode?: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, iterationType?: IterationType): BinaryTreeNode<K, V> | null | undefined;
|
|
787
824
|
/**
|
|
788
825
|
* Gets the value associated with a key.
|
|
789
|
-
* @remarks Time O(
|
|
826
|
+
* @remarks Time O(1) in Map mode, O(N) otherwise (via `getNode`). Space O(1) in Map mode, O(H) or O(N) otherwise. BST subclasses override non-Map-mode to O(log N).
|
|
790
827
|
*
|
|
791
828
|
* @param keyNodeEntryOrPredicate - The key, node, or entry to get the value for.
|
|
792
829
|
* @param [startNode=this._root] - The node to start searching from (if not in Map mode).
|
|
@@ -822,6 +859,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
822
859
|
|
|
823
860
|
|
|
824
861
|
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
825
866
|
|
|
826
867
|
|
|
827
868
|
|
|
@@ -836,7 +877,7 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
836
877
|
get(keyNodeEntryOrPredicate: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, startNode?: K | BinaryTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, iterationType?: IterationType): V | undefined;
|
|
837
878
|
/**
|
|
838
879
|
* Checks if a node matching the predicate exists in the tree.
|
|
839
|
-
* @remarks Time O(
|
|
880
|
+
* @remarks Time O(N) via `search`. Space O(H) or O(N). BST/Red-Black Tree/AVL Tree subclasses override to O(log N) for key lookups.
|
|
840
881
|
*
|
|
841
882
|
* @param [keyNodeEntryOrPredicate] - The key, node, entry, or predicate to check for.
|
|
842
883
|
* @param [startNode] - The node to start the search from.
|
|
@@ -872,6 +913,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
872
913
|
|
|
873
914
|
|
|
874
915
|
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
875
920
|
|
|
876
921
|
|
|
877
922
|
|
|
@@ -938,6 +983,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
938
983
|
|
|
939
984
|
|
|
940
985
|
|
|
986
|
+
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
941
990
|
|
|
942
991
|
|
|
943
992
|
|
|
@@ -983,6 +1032,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
983
1032
|
|
|
984
1033
|
|
|
985
1034
|
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
986
1039
|
|
|
987
1040
|
|
|
988
1041
|
|
|
@@ -1036,6 +1089,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1036
1089
|
|
|
1037
1090
|
|
|
1038
1091
|
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1039
1096
|
|
|
1040
1097
|
|
|
1041
1098
|
|
|
@@ -1085,6 +1142,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1085
1142
|
|
|
1086
1143
|
|
|
1087
1144
|
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1088
1149
|
|
|
1089
1150
|
|
|
1090
1151
|
|
|
@@ -1134,6 +1195,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1134
1195
|
|
|
1135
1196
|
|
|
1136
1197
|
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1137
1202
|
|
|
1138
1203
|
|
|
1139
1204
|
|
|
@@ -1208,6 +1273,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1208
1273
|
|
|
1209
1274
|
|
|
1210
1275
|
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
|
|
1211
1280
|
|
|
1212
1281
|
|
|
1213
1282
|
|
|
@@ -1254,6 +1323,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1254
1323
|
|
|
1255
1324
|
|
|
1256
1325
|
|
|
1326
|
+
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
|
|
1257
1330
|
|
|
1258
1331
|
|
|
1259
1332
|
|
|
@@ -1320,6 +1393,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1320
1393
|
|
|
1321
1394
|
|
|
1322
1395
|
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1323
1400
|
|
|
1324
1401
|
|
|
1325
1402
|
|
|
@@ -1362,6 +1439,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1362
1439
|
|
|
1363
1440
|
|
|
1364
1441
|
|
|
1442
|
+
|
|
1443
|
+
|
|
1444
|
+
|
|
1445
|
+
|
|
1365
1446
|
|
|
1366
1447
|
|
|
1367
1448
|
|
|
@@ -1406,6 +1487,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1406
1487
|
|
|
1407
1488
|
|
|
1408
1489
|
|
|
1490
|
+
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
|
|
1409
1494
|
|
|
1410
1495
|
|
|
1411
1496
|
|
|
@@ -1452,6 +1537,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1452
1537
|
|
|
1453
1538
|
|
|
1454
1539
|
|
|
1540
|
+
|
|
1541
|
+
|
|
1542
|
+
|
|
1543
|
+
|
|
1455
1544
|
|
|
1456
1545
|
|
|
1457
1546
|
|
|
@@ -1500,6 +1589,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1500
1589
|
|
|
1501
1590
|
|
|
1502
1591
|
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
|
|
1503
1596
|
|
|
1504
1597
|
|
|
1505
1598
|
|
|
@@ -1551,6 +1644,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1551
1644
|
|
|
1552
1645
|
|
|
1553
1646
|
|
|
1647
|
+
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1554
1651
|
|
|
1555
1652
|
|
|
1556
1653
|
|
|
@@ -1606,6 +1703,10 @@ export declare class BinaryTree<K = any, V = any, R = any> extends IterableEntry
|
|
|
1606
1703
|
|
|
1607
1704
|
|
|
1608
1705
|
|
|
1706
|
+
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
|
|
1609
1710
|
|
|
1610
1711
|
|
|
1611
1712
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { BSTNOptKeyOrNode, BSTOptions, BTNRep, Comparator, DFSOrderPattern, EntryCallback, FamilyPosition, IterationType, NodeCallback, NodePredicate, OptNode, RBTNColor } from '../../types';
|
|
9
9
|
import { BinaryTree } from './binary-tree';
|
|
10
10
|
import { IBinaryTree } from '../../interfaces';
|
|
11
11
|
import { Range } from '../../common';
|
|
@@ -372,6 +372,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
372
372
|
|
|
373
373
|
|
|
374
374
|
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
375
383
|
|
|
376
384
|
|
|
377
385
|
|
|
@@ -444,6 +452,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
444
452
|
|
|
445
453
|
|
|
446
454
|
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
447
463
|
|
|
448
464
|
|
|
449
465
|
|
|
@@ -519,6 +535,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
519
535
|
|
|
520
536
|
|
|
521
537
|
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
522
546
|
|
|
523
547
|
|
|
524
548
|
|
|
@@ -532,7 +556,7 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
532
556
|
* // Level-order grouping
|
|
533
557
|
* const bst = new BST<number>([5, 3, 7, 1, 4]);
|
|
534
558
|
* const levels = bst.listLevels(node => node.key);
|
|
535
|
-
* console.log(levels
|
|
559
|
+
* console.log(levels); // toBeInstanceOf;
|
|
536
560
|
* console.log(levels[0].length); // 1; // root level has 1 node
|
|
537
561
|
* const allKeys = levels.flat().sort((a, b) => a - b);
|
|
538
562
|
* console.log(allKeys); // [1, 3, 4, 5, 7];
|
|
@@ -605,6 +629,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
605
629
|
|
|
606
630
|
|
|
607
631
|
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
608
640
|
|
|
609
641
|
|
|
610
642
|
|
|
@@ -675,6 +707,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
675
707
|
|
|
676
708
|
|
|
677
709
|
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
|
|
717
|
+
|
|
678
718
|
|
|
679
719
|
|
|
680
720
|
|
|
@@ -724,6 +764,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
724
764
|
|
|
725
765
|
|
|
726
766
|
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
727
771
|
|
|
728
772
|
|
|
729
773
|
|
|
@@ -890,6 +934,18 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
890
934
|
|
|
891
935
|
|
|
892
936
|
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
|
|
947
|
+
|
|
948
|
+
|
|
893
949
|
|
|
894
950
|
|
|
895
951
|
|
|
@@ -972,6 +1028,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
972
1028
|
|
|
973
1029
|
|
|
974
1030
|
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
975
1039
|
|
|
976
1040
|
|
|
977
1041
|
|
|
@@ -1024,6 +1088,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1024
1088
|
|
|
1025
1089
|
|
|
1026
1090
|
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1027
1095
|
|
|
1028
1096
|
|
|
1029
1097
|
|
|
@@ -1078,6 +1146,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1078
1146
|
|
|
1079
1147
|
|
|
1080
1148
|
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1081
1153
|
|
|
1082
1154
|
|
|
1083
1155
|
|
|
@@ -1131,6 +1203,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1131
1203
|
|
|
1132
1204
|
|
|
1133
1205
|
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1134
1210
|
|
|
1135
1211
|
|
|
1136
1212
|
|
|
@@ -1185,6 +1261,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1185
1261
|
|
|
1186
1262
|
|
|
1187
1263
|
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1188
1268
|
|
|
1189
1269
|
|
|
1190
1270
|
|
|
@@ -1239,6 +1319,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1239
1319
|
|
|
1240
1320
|
|
|
1241
1321
|
|
|
1322
|
+
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
|
|
1242
1326
|
|
|
1243
1327
|
|
|
1244
1328
|
|
|
@@ -1288,6 +1372,10 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1288
1372
|
|
|
1289
1373
|
|
|
1290
1374
|
|
|
1375
|
+
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
|
|
1291
1379
|
|
|
1292
1380
|
|
|
1293
1381
|
|
|
@@ -1369,6 +1457,14 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1369
1457
|
|
|
1370
1458
|
|
|
1371
1459
|
|
|
1460
|
+
|
|
1461
|
+
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1372
1468
|
|
|
1373
1469
|
|
|
1374
1470
|
|
|
@@ -1421,7 +1517,7 @@ export declare class BST<K = any, V = any, R = any> extends BinaryTree<K, V, R>
|
|
|
1421
1517
|
* - Value: true if the deletion succeeded, false if it failed (e.g., key not found during deletion phase).
|
|
1422
1518
|
* - If no nodes match the search criteria, the returned map is empty.
|
|
1423
1519
|
*/
|
|
1424
|
-
deleteWhere(keyNodeEntryOrPredicate: K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BSTNode<K, V>> | Range<K>, onlyOne?: boolean, startNode?: K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, iterationType?: IterationType):
|
|
1520
|
+
deleteWhere(keyNodeEntryOrPredicate: K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined | NodePredicate<BSTNode<K, V>> | Range<K>, onlyOne?: boolean, startNode?: K | BSTNode<K, V> | [K | null | undefined, V | undefined] | null | undefined, iterationType?: IterationType): boolean;
|
|
1425
1521
|
/**
|
|
1426
1522
|
* (Protected) Creates the default comparator function for keys that don't have a custom comparator.
|
|
1427
1523
|
* @remarks Time O(1) Space O(1)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
|
|
6
6
|
* @license MIT License
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { BTNRep, CRUD, EntryCallback, FamilyPosition, NodePredicate, RBTNColor, IterationType, RedBlackTreeOptions } from '../../types';
|
|
9
9
|
import { BST } from './bst';
|
|
10
10
|
import { IBinaryTree } from '../../interfaces';
|
|
11
11
|
export declare class RedBlackTreeNode<K = any, V = any> {
|
|
@@ -217,13 +217,24 @@ export declare class RedBlackTree<K = any, V = any, R = any> extends BST<K, V, R
|
|
|
217
217
|
*/
|
|
218
218
|
isNode(keyNodeOrEntry: K | RedBlackTreeNode<K, V> | [K | null | undefined, V | undefined] | null | undefined): keyNodeOrEntry is RedBlackTreeNode<K, V>;
|
|
219
219
|
/**
|
|
220
|
-
* Remove all nodes
|
|
220
|
+
* Remove all nodes, clear the key→value store (if in map mode) and internal caches.
|
|
221
221
|
* @remarks Time O(n), Space O(1)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
227
238
|
|
|
228
239
|
|
|
229
240
|
|
|
@@ -576,6 +587,22 @@ export declare class RedBlackTree<K = any, V = any, R = any> extends BST<K, V, R
|
|
|
576
587
|
|
|
577
588
|
|
|
578
589
|
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
|
|
579
606
|
|
|
580
607
|
|
|
581
608
|
|
|
@@ -734,6 +761,22 @@ export declare class RedBlackTree<K = any, V = any, R = any> extends BST<K, V, R
|
|
|
734
761
|
|
|
735
762
|
|
|
736
763
|
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
737
780
|
|
|
738
781
|
|
|
739
782
|
|
|
@@ -758,7 +801,7 @@ export declare class RedBlackTree<K = any, V = any, R = any> extends BST<K, V, R
|
|
|
758
801
|
* console.log(rbt.has(5)); // false;
|
|
759
802
|
* console.log(rbt.size); // 4;
|
|
760
803
|
*/
|
|
761
|
-
delete(keyNodeEntryRawOrPredicate: BTNRep<K, V, RedBlackTreeNode<K, V>> | NodePredicate<RedBlackTreeNode<K, V> | null>):
|
|
804
|
+
delete(keyNodeEntryRawOrPredicate: BTNRep<K, V, RedBlackTreeNode<K, V>> | NodePredicate<RedBlackTreeNode<K, V> | null>): boolean;
|
|
762
805
|
/**
|
|
763
806
|
* Transform entries into a like-kind red-black tree with possibly different key/value types.
|
|
764
807
|
* @remarks Time O(n) average, Space O(n)
|
|
@@ -858,6 +901,18 @@ export declare class RedBlackTree<K = any, V = any, R = any> extends BST<K, V, R
|
|
|
858
901
|
|
|
859
902
|
|
|
860
903
|
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
861
916
|
|
|
862
917
|
|
|
863
918
|
|
|
@@ -994,6 +1049,22 @@ export declare class RedBlackTree<K = any, V = any, R = any> extends BST<K, V, R
|
|
|
994
1049
|
|
|
995
1050
|
|
|
996
1051
|
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
997
1068
|
|
|
998
1069
|
|
|
999
1070
|
|