mirror of
https://github.com/zrwusa/data-structure-typed.git
synced 2024-11-23 12:54:04 +00:00
[core] Rename those legacy IDs that have not been updated to 'key'
This commit is contained in:
parent
e96a4be5ea
commit
8b8e781607
|
@ -248,19 +248,19 @@ export abstract class AbstractBinaryTree<N extends AbstractBinaryTreeNode<N['val
|
|||
/**
|
||||
* The `addMany` function takes an array of binary tree node IDs or nodes, and optionally an array of corresponding data
|
||||
* values, and adds them to the binary tree.
|
||||
* @param {(BinaryTreeNodeKey | null)[] | (N | null)[]} idsOrNodes - An array of BinaryTreeNodeKey or BinaryTreeNode
|
||||
* @param {(BinaryTreeNodeKey | null)[] | (N | null)[]} keysOrNodes - An array of BinaryTreeNodeKey or BinaryTreeNode
|
||||
* objects, or null values.
|
||||
* @param {N['val'][]} [data] - The `data` parameter is an optional array of values (`N['val'][]`) that corresponds to
|
||||
* the nodes or node IDs being added. It is used to set the value of each node being added. If `data` is not provided,
|
||||
* the value of the nodes will be `undefined`.
|
||||
* @returns The function `addMany` returns an array of `N`, `null`, or `undefined` values.
|
||||
*/
|
||||
addMany(idsOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[], data?: N['val'][]): (N | null | undefined)[] {
|
||||
addMany(keysOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[], data?: N['val'][]): (N | null | undefined)[] {
|
||||
// TODO not sure addMany not be run multi times
|
||||
const inserted: (N | null | undefined)[] = [];
|
||||
|
||||
for (let i = 0; i < idsOrNodes.length; i++) {
|
||||
const keyOrNode = idsOrNodes[i];
|
||||
for (let i = 0; i < keysOrNodes.length; i++) {
|
||||
const keyOrNode = keysOrNodes[i];
|
||||
if (keyOrNode instanceof AbstractBinaryTreeNode) {
|
||||
inserted.push(this.add(keyOrNode.key, keyOrNode.val));
|
||||
continue;
|
||||
|
@ -278,17 +278,17 @@ export abstract class AbstractBinaryTree<N extends AbstractBinaryTreeNode<N['val
|
|||
}
|
||||
|
||||
/**
|
||||
* The `fill` function clears the binary tree and adds multiple nodes with the given IDs or nodes and optional data.
|
||||
* @param {(BinaryTreeNodeKey | N)[]} idsOrNodes - The `idsOrNodes` parameter is an array that can contain either
|
||||
* The `refill` function clears the binary tree and adds multiple nodes with the given IDs or nodes and optional data.
|
||||
* @param {(BinaryTreeNodeKey | N)[]} keysOrNodes - The `keysOrNodes` parameter is an array that can contain either
|
||||
* `BinaryTreeNodeKey` or `N` values.
|
||||
* @param {N[] | Array<N['val']>} [data] - The `data` parameter is an optional array of values that will be assigned to
|
||||
* the nodes being added. If provided, the length of the `data` array should be equal to the length of the `idsOrNodes`
|
||||
* the nodes being added. If provided, the length of the `data` array should be equal to the length of the `keysOrNodes`
|
||||
* array. Each value in the `data` array will be assigned to the
|
||||
* @returns The method is returning a boolean value.
|
||||
*/
|
||||
fill(idsOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[], data?: N[] | Array<N['val']>): boolean {
|
||||
refill(keysOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[], data?: N[] | Array<N['val']>): boolean {
|
||||
this.clear();
|
||||
return idsOrNodes.length === this.addMany(idsOrNodes, data).length;
|
||||
return keysOrNodes.length === this.addMany(keysOrNodes, data).length;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -130,7 +130,7 @@ export class BST<N extends BSTNode<N['val'], N> = BSTNode> extends BinaryTree<N>
|
|||
/**
|
||||
* The `addMany` function overrides the base class method to add multiple nodes to a binary search tree in a balanced
|
||||
* manner.
|
||||
* @param {[BinaryTreeNodeKey | N , N['val']][]} idsOrNodes - The `idsOrNodes` parameter in the `addMany` function is an array of
|
||||
* @param {[BinaryTreeNodeKey | N , N['val']][]} keysOrNodes - The `keysOrNodes` parameter in the `addMany` function is an array of
|
||||
* `BinaryTreeNodeKey` or `N` (node) objects, or `null` values. It represents the nodes or node IDs that need to be added
|
||||
* to the binary search tree.
|
||||
* @param {N['val'][]} data - The values of tree nodes
|
||||
|
@ -138,18 +138,18 @@ export class BST<N extends BSTNode<N['val'], N> = BSTNode> extends BinaryTree<N>
|
|||
* @returns The function `addMany` returns an array of `N`, `null`, or `undefined` values.
|
||||
*/
|
||||
override addMany(
|
||||
idsOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[],
|
||||
keysOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[],
|
||||
data?: N['val'][],
|
||||
isBalanceAdd = false
|
||||
): (N | null | undefined)[] {
|
||||
function hasNoNull(arr: (BinaryTreeNodeKey | null)[] | (N | null)[]): arr is BinaryTreeNodeKey[] | N[] {
|
||||
return arr.indexOf(null) === -1;
|
||||
}
|
||||
if (!isBalanceAdd || !hasNoNull(idsOrNodes)) {
|
||||
return super.addMany(idsOrNodes, data);
|
||||
if (!isBalanceAdd || !hasNoNull(keysOrNodes)) {
|
||||
return super.addMany(keysOrNodes, data);
|
||||
}
|
||||
const inserted: (N | null | undefined)[] = [];
|
||||
const combinedArr: [BinaryTreeNodeKey | N, N['val']][] = idsOrNodes.map((value, index) => [value, data?.[index]]);
|
||||
const combinedArr: [BinaryTreeNodeKey | N, N['val']][] = keysOrNodes.map((value, index) => [value, data?.[index]]);
|
||||
let sorted = [];
|
||||
function isNodeOrNullTuple(arr: [BinaryTreeNodeKey | N, N['val']][]): arr is [N, N['val']][] {
|
||||
for (const [keyOrNode] of arr) if (keyOrNode instanceof BSTNode) return true;
|
||||
|
@ -169,7 +169,7 @@ export class BST<N extends BSTNode<N['val'], N> = BSTNode> extends BinaryTree<N>
|
|||
} else if (isBinaryTreeKeyOrNullTuple(combinedArr)) {
|
||||
sorted = combinedArr.sort((a, b) => a[0] - b[0]);
|
||||
} else {
|
||||
throw new Error('Invalid input idsOrNodes');
|
||||
throw new Error('Invalid input keysOrNodes');
|
||||
}
|
||||
sortedKeysOrNodes = sorted.map(([keyOrNode]) => keyOrNode);
|
||||
sortedData = sorted.map(([, val]) => val);
|
||||
|
|
|
@ -211,7 +211,7 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
|
|||
/**
|
||||
* The `addMany` function takes an array of node IDs or nodes and adds them to the tree multiset, returning an array of
|
||||
* the inserted nodes.
|
||||
* @param {(BinaryTreeNodeKey | null)[] | (N | null)[]} idsOrNodes - An array of BinaryTreeNodeKey or BinaryTreeNode
|
||||
* @param {(BinaryTreeNodeKey | null)[] | (N | null)[]} keysOrNodes - An array of BinaryTreeNodeKey or BinaryTreeNode
|
||||
* objects, or null values.
|
||||
* @param {N['val'][]} [data] - The `data` parameter is an optional array of values (`N['val'][]`) that corresponds to
|
||||
* the nodes being added. It is used when adding nodes using the `keyOrNode` and `data` arguments in the `this.add()`
|
||||
|
@ -219,13 +219,13 @@ export class TreeMultiset<N extends TreeMultisetNode<N['val'], N> = TreeMultiset
|
|||
* @returns The function `addMany` returns an array of `N`, `null`, or `undefined` values.
|
||||
*/
|
||||
override addMany(
|
||||
idsOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[],
|
||||
keysOrNodes: (BinaryTreeNodeKey | null)[] | (N | null)[],
|
||||
data?: N['val'][]
|
||||
): (N | null | undefined)[] {
|
||||
const inserted: (N | null | undefined)[] = [];
|
||||
|
||||
for (let i = 0; i < idsOrNodes.length; i++) {
|
||||
const keyOrNode = idsOrNodes[i];
|
||||
for (let i = 0; i < keysOrNodes.length; i++) {
|
||||
const keyOrNode = keysOrNodes[i];
|
||||
|
||||
if (keyOrNode instanceof TreeMultisetNode) {
|
||||
inserted.push(this.add(keyOrNode.key, keyOrNode.val, keyOrNode.count));
|
||||
|
|
|
@ -52,9 +52,9 @@ export interface IAbstractBinaryTree<N extends AbstractBinaryTreeNode<N['val'],
|
|||
|
||||
add(key: BinaryTreeNodeKey | N, val?: N['val']): N | null | undefined;
|
||||
|
||||
addMany(idsOrNodes: (BinaryTreeNodeKey | N | null)[], data?: N['val'][]): (N | null | undefined)[];
|
||||
addMany(keysOrNodes: (BinaryTreeNodeKey | N | null)[], data?: N['val'][]): (N | null | undefined)[];
|
||||
|
||||
fill(idsOrNodes: (BinaryTreeNodeKey | N | null)[], data?: N[] | Array<N['val']>): boolean;
|
||||
refill(keysOrNodes: (BinaryTreeNodeKey | N | null)[], data?: N[] | Array<N['val']>): boolean;
|
||||
|
||||
remove(key: BinaryTreeNodeKey, ignoreCount?: boolean): BinaryTreeDeletedResult<N>[];
|
||||
|
||||
|
|
Loading…
Reference in a new issue