binary-tree-typed 2.2.7 → 2.3.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.
Files changed (30) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/index.cjs +41 -43
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs-legacy/index.cjs +41 -43
  5. package/dist/cjs-legacy/index.cjs.map +1 -1
  6. package/dist/esm/index.mjs +41 -43
  7. package/dist/esm/index.mjs.map +1 -1
  8. package/dist/esm-legacy/index.mjs +41 -43
  9. package/dist/esm-legacy/index.mjs.map +1 -1
  10. package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +1 -1
  11. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -2
  12. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +10 -10
  13. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +22 -24
  14. package/dist/types/data-structures/binary-tree/bst.d.ts +11 -11
  15. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +1 -1
  16. package/dist/types/data-structures/binary-tree/tree-counter.d.ts +1 -1
  17. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -2
  18. package/dist/umd/binary-tree-typed.js +41 -43
  19. package/dist/umd/binary-tree-typed.js.map +1 -1
  20. package/dist/umd/binary-tree-typed.min.js +2 -2
  21. package/dist/umd/binary-tree-typed.min.js.map +1 -1
  22. package/package.json +2 -2
  23. package/src/data-structures/binary-tree/avl-tree-counter.ts +6 -6
  24. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +13 -13
  25. package/src/data-structures/binary-tree/avl-tree.ts +15 -15
  26. package/src/data-structures/binary-tree/binary-tree.ts +52 -55
  27. package/src/data-structures/binary-tree/bst.ts +21 -22
  28. package/src/data-structures/binary-tree/red-black-tree.ts +3 -3
  29. package/src/data-structures/binary-tree/tree-counter.ts +4 -4
  30. package/src/data-structures/binary-tree/tree-multi-map.ts +13 -13
@@ -1192,9 +1192,9 @@ var BinaryTree = class extends IterableEntryBase {
1192
1192
  iterationType = "ITERATIVE";
1193
1193
  /**
1194
1194
  * Creates an instance of BinaryTree.
1195
- * @remarks Time O(N * M), where N is the number of items in `keysNodesEntriesOrRaws` and M is the tree size at insertion time (due to O(M) `add` operation). Space O(N) for storing the nodes.
1195
+ * @remarks Time O(N * M), where N is the number of items in `keysNodesEntriesOrRaws` and M is the tree size at insertion time (due to O(M) `set` operation). Space O(N) for storing the nodes.
1196
1196
  *
1197
- * @param [keysNodesEntriesOrRaws=[]] - An iterable of items to add.
1197
+ * @param [keysNodesEntriesOrRaws=[]] - An iterable of items to set.
1198
1198
  * @param [options] - Configuration options for the tree.
1199
1199
  */
1200
1200
  constructor(keysNodesEntriesOrRaws = [], options) {
@@ -1207,7 +1207,7 @@ var BinaryTree = class extends IterableEntryBase {
1207
1207
  if (typeof toEntryFn === "function") this._toEntryFn = toEntryFn;
1208
1208
  else if (toEntryFn) throw TypeError("toEntryFn must be a function type");
1209
1209
  }
1210
- if (keysNodesEntriesOrRaws) this.addMany(keysNodesEntriesOrRaws);
1210
+ if (keysNodesEntriesOrRaws) this.setMany(keysNodesEntriesOrRaws);
1211
1211
  }
1212
1212
  _isMapMode = true;
1213
1213
  /**
@@ -1421,10 +1421,20 @@ var BinaryTree = class extends IterableEntryBase {
1421
1421
  * @remarks Time O(log N), For BST, Red-Black Tree, and AVL Tree subclasses, the worst-case time is O(log N). This implementation adds the node at the first available position in a level-order (BFS) traversal. This is NOT a Binary Search Tree insertion. Time O(N), where N is the number of nodes. It must traverse level-by-level to find an empty slot. Space O(N) in the worst case for the BFS queue (e.g., a full last level).
1422
1422
  *
1423
1423
  * @param keyNodeOrEntry - The key, node, or entry to add.
1424
+ * @returns True if the addition was successful, false otherwise.
1425
+ */
1426
+ add(keyNodeOrEntry) {
1427
+ return this.set(keyNodeOrEntry);
1428
+ }
1429
+ /**
1430
+ * Adds or updates a new node to the tree.
1431
+ * @remarks Time O(log N), For BST, Red-Black Tree, and AVL Tree subclasses, the worst-case time is O(log N). This implementation sets the node at the first available position in a level-order (BFS) traversal. This is NOT a Binary Search Tree insertion. Time O(N), where N is the number of nodes. It must traverse level-by-level to find an empty slot. Space O(N) in the worst case for the BFS queue (e.g., a full last level).
1432
+ *
1433
+ * @param keyNodeOrEntry - The key, node, or entry to set or update.
1424
1434
  * @param [value] - The value, if providing just a key.
1425
1435
  * @returns True if the addition was successful, false otherwise.
1426
1436
  */
1427
- add(keyNodeOrEntry, value) {
1437
+ set(keyNodeOrEntry, value) {
1428
1438
  const [newNode, newValue] = this._keyValueNodeOrEntryToNodeAndValue(keyNodeOrEntry, value);
1429
1439
  if (newNode === void 0) return false;
1430
1440
  if (!this._root) {
@@ -1468,25 +1478,24 @@ var BinaryTree = class extends IterableEntryBase {
1468
1478
  return false;
1469
1479
  }
1470
1480
  /**
1471
- * Adds or updates a new node to the tree.
1472
- * @remarks Time O(log N), For BST, Red-Black Tree, and AVL Tree subclasses, the worst-case time is O(log N). This implementation adds the node at the first available position in a level-order (BFS) traversal. This is NOT a Binary Search Tree insertion. Time O(N), where N is the number of nodes. It must traverse level-by-level to find an empty slot. Space O(N) in the worst case for the BFS queue (e.g., a full last level).
1481
+ * Adds multiple items to the tree.
1482
+ * @remarks Time O(N * M), where N is the number of items to set and M is the size of the tree at insertion (due to O(M) `set` operation). Space O(M) (from `set`) + O(N) (for the `inserted` array).
1473
1483
  *
1474
- * @param keyNodeOrEntry - The key, node, or entry to add or update.
1475
- * @param [value] - The value, if providing just a key.
1476
- * @returns True if the addition was successful, false otherwise.
1484
+ * @param keysNodesEntriesOrRaws - An iterable of items to set.
1485
+ * @returns An array of booleans indicating the success of each individual `set` operation.
1477
1486
  */
1478
- set(keyNodeOrEntry, value) {
1479
- return this.add(keyNodeOrEntry, value);
1487
+ addMany(keysNodesEntriesOrRaws) {
1488
+ return this.setMany(keysNodesEntriesOrRaws);
1480
1489
  }
1481
1490
  /**
1482
- * Adds multiple items to the tree.
1483
- * @remarks Time O(N * M), where N is the number of items to add and M is the size of the tree at insertion (due to O(M) `add` operation). Space O(M) (from `add`) + O(N) (for the `inserted` array).
1491
+ * Adds or updates multiple items to the tree.
1492
+ * @remarks Time O(N * M), where N is the number of items to set and M is the size of the tree at insertion (due to O(M) `set` operation). Space O(M) (from `set`) + O(N) (for the `inserted` array).
1484
1493
  *
1485
- * @param keysNodesEntriesOrRaws - An iterable of items to add.
1494
+ * @param keysNodesEntriesOrRaws - An iterable of items to set or update.
1486
1495
  * @param [values] - An optional parallel iterable of values.
1487
- * @returns An array of booleans indicating the success of each individual `add` operation.
1496
+ * @returns An array of booleans indicating the success of each individual `set` operation.
1488
1497
  */
1489
- addMany(keysNodesEntriesOrRaws, values) {
1498
+ setMany(keysNodesEntriesOrRaws, values) {
1490
1499
  const inserted = [];
1491
1500
  let valuesIterator;
1492
1501
  if (values) {
@@ -1501,40 +1510,29 @@ var BinaryTree = class extends IterableEntryBase {
1501
1510
  }
1502
1511
  }
1503
1512
  if (this.isRaw(keyNodeEntryOrRaw)) keyNodeEntryOrRaw = this._toEntryFn(keyNodeEntryOrRaw);
1504
- inserted.push(this.add(keyNodeEntryOrRaw, value));
1513
+ inserted.push(this.set(keyNodeEntryOrRaw, value));
1505
1514
  }
1506
1515
  return inserted;
1507
1516
  }
1508
1517
  /**
1509
- * Adds or updates multiple items to the tree.
1510
- * @remarks Time O(N * M), where N is the number of items to add and M is the size of the tree at insertion (due to O(M) `add` operation). Space O(M) (from `add`) + O(N) (for the `inserted` array).
1511
- *
1512
- * @param keysNodesEntriesOrRaws - An iterable of items to add or update.
1513
- * @param [values] - An optional parallel iterable of values.
1514
- * @returns An array of booleans indicating the success of each individual `add` operation.
1515
- */
1516
- setMany(keysNodesEntriesOrRaws, values) {
1517
- return this.addMany(keysNodesEntriesOrRaws, values);
1518
- }
1519
- /**
1520
- * Merges another tree into this one by adding all its nodes.
1521
- * @remarks Time O(N * M), same as `addMany`, where N is the size of `anotherTree` and M is the size of this tree. Space O(M) (from `add`).
1518
+ * Merges another tree into this one by seting all its nodes.
1519
+ * @remarks Time O(N * M), same as `setMany`, where N is the size of `anotherTree` and M is the size of this tree. Space O(M) (from `set`).
1522
1520
  *
1523
1521
  * @param anotherTree - The tree to merge.
1524
1522
  */
1525
1523
  merge(anotherTree) {
1526
- this.addMany(anotherTree, []);
1524
+ this.setMany(anotherTree, []);
1527
1525
  }
1528
1526
  /**
1529
1527
  * Clears the tree and refills it with new items.
1530
- * @remarks Time O(N) (for `clear`) + O(N * M) (for `addMany`) = O(N * M). Space O(M) (from `addMany`).
1528
+ * @remarks Time O(N) (for `clear`) + O(N * M) (for `setMany`) = O(N * M). Space O(M) (from `setMany`).
1531
1529
  *
1532
- * @param keysNodesEntriesOrRaws - An iterable of items to add.
1530
+ * @param keysNodesEntriesOrRaws - An iterable of items to set.
1533
1531
  * @param [values] - An optional parallel iterable of values.
1534
1532
  */
1535
1533
  refill(keysNodesEntriesOrRaws, values) {
1536
1534
  this.clear();
1537
- this.addMany(keysNodesEntriesOrRaws, values);
1535
+ this.setMany(keysNodesEntriesOrRaws, values);
1538
1536
  }
1539
1537
  /**
1540
1538
  * Deletes a node from the tree.
@@ -2199,7 +2197,7 @@ var BinaryTree = class extends IterableEntryBase {
2199
2197
  }
2200
2198
  /**
2201
2199
  * Clones the tree.
2202
- * @remarks Time O(N * M), where N is the number of nodes and M is the tree size during insertion (due to `bfs` + `add`, and `add` is O(M)). Space O(N) for the new tree and the BFS queue.
2200
+ * @remarks Time O(N * M), where N is the number of nodes and M is the tree size during insertion (due to `bfs` + `set`, and `set` is O(M)). Space O(N) for the new tree and the BFS queue.
2203
2201
  *
2204
2202
  * @returns A new, cloned instance of the tree.
2205
2203
  */
@@ -2210,7 +2208,7 @@ var BinaryTree = class extends IterableEntryBase {
2210
2208
  }
2211
2209
  /**
2212
2210
  * Creates a new tree containing only the entries that satisfy the predicate.
2213
- * @remarks Time O(N * M), where N is nodes in this tree, and M is size of the new tree during insertion (O(N) iteration + O(M) `add` for each item). Space O(N) for the new tree.
2211
+ * @remarks Time O(N * M), where N is nodes in this tree, and M is size of the new tree during insertion (O(N) iteration + O(M) `set` for each item). Space O(N) for the new tree.
2214
2212
  *
2215
2213
  * @param predicate - A function to test each [key, value] pair.
2216
2214
  * @param [thisArg] - `this` context for the predicate.
@@ -2219,7 +2217,7 @@ var BinaryTree = class extends IterableEntryBase {
2219
2217
  filter(predicate, thisArg) {
2220
2218
  const out = this._createInstance();
2221
2219
  let i = 0;
2222
- for (const [k, v] of this) if (predicate.call(thisArg, v, k, i++, this)) out.add([k, v]);
2220
+ for (const [k, v] of this) if (predicate.call(thisArg, v, k, i++, this)) out.set([k, v]);
2223
2221
  return out;
2224
2222
  }
2225
2223
  /**
@@ -2237,7 +2235,7 @@ var BinaryTree = class extends IterableEntryBase {
2237
2235
  map(cb, options, thisArg) {
2238
2236
  const out = this._createLike([], options);
2239
2237
  let i = 0;
2240
- for (const [k, v] of this) out.add(cb.call(thisArg, v, k, i++, this));
2238
+ for (const [k, v] of this) out.set(cb.call(thisArg, v, k, i++, this));
2241
2239
  return out;
2242
2240
  }
2243
2241
  /**
@@ -2489,18 +2487,18 @@ var BinaryTree = class extends IterableEntryBase {
2489
2487
  return [this.createNode(keyNodeOrEntry, value), value];
2490
2488
  }
2491
2489
  /**
2492
- * (Protected) Helper for cloning. Performs a BFS and adds all nodes to the new tree.
2493
- * @remarks Time O(N * M) (O(N) BFS + O(M) `add` for each node).
2490
+ * (Protected) Helper for cloning. Performs a BFS and sets all nodes to the new tree.
2491
+ * @remarks Time O(N * M) (O(N) BFS + O(M) `set` for each node).
2494
2492
  *
2495
2493
  * @param cloned - The new, empty tree instance to populate.
2496
2494
  */
2497
2495
  _clone(cloned) {
2498
2496
  this.bfs(
2499
2497
  (node) => {
2500
- if (node === null) cloned.add(null);
2498
+ if (node === null) cloned.set(null);
2501
2499
  else {
2502
- if (this._isMapMode) cloned.add([node.key, this._store.get(node.key)]);
2503
- else cloned.add([node.key, node.value]);
2500
+ if (this._isMapMode) cloned.set([node.key, this._store.get(node.key)]);
2501
+ else cloned.set([node.key, node.value]);
2504
2502
  }
2505
2503
  },
2506
2504
  this._root,