sonic-forest
Version:
High-performance (binary) tree and sorted map implementation (AVL, Splay, Radix, Red-Black)
64 lines (63 loc) • 3.23 kB
TypeScript
import { OrderedMapIterator } from './SortedMapIterator';
import { TreeNode } from './SortedMapNode';
import { TreeNodeEnableIndex } from './SortedMapNode';
import type { Comparator, SonicMap, SonicNodePublicReference } from '../types';
export declare class SortedMap<K, V> implements SonicMap<K, V, TreeNode<K, V>> {
enableIndex: boolean;
protected _header: TreeNode<K, V> | TreeNodeEnableIndex<K, V>;
protected _root: TreeNode<K, V> | undefined;
protected readonly _TreeNodeClass: typeof TreeNode | typeof TreeNodeEnableIndex;
constructor(comparator?: Comparator<K>, enableIndex?: boolean);
protected _length: number;
get length(): number;
empty(): boolean;
protected _lowerBound(curNode: TreeNode<K, V> | undefined, key: K): TreeNode<K, V>;
protected _upperBound(curNode: TreeNode<K, V> | undefined, key: K): TreeNode<K, V> | TreeNodeEnableIndex<K, V>;
protected _reverseLowerBound(curNode: TreeNode<K, V> | undefined, key: K): TreeNode<K, V>;
protected _reverseUpperBound(curNode: TreeNode<K, V> | undefined, key: K): TreeNode<K, V> | TreeNodeEnableIndex<K, V>;
protected _eraseNodeSelfBalance(curNode: TreeNode<K, V>): void;
protected _eraseNode(curNode: TreeNode<K, V>): void;
protected _insertNodeSelfBalance(curNode: TreeNode<K, V>): void;
protected _set(key: K, value: V, hint?: OrderedMapIterator<K, V>): number;
protected _getTreeNodeByKey(curNode: TreeNode<K, V> | undefined, key: K): TreeNode<K, V>;
updateKeyByIterator(iter: OrderedMapIterator<K, V>, key: K): boolean;
eraseElementByPos(pos: number): void;
eraseElementByKey(key: K): boolean;
eraseElementByIterator(iter: OrderedMapIterator<K, V>): OrderedMapIterator<K, V>;
getHeight(): number;
begin(): OrderedMapIterator<K, V>;
end(): OrderedMapIterator<K, V>;
rBegin(): OrderedMapIterator<K, V>;
rEnd(): OrderedMapIterator<K, V>;
front(): [K, V] | undefined;
back(): [K, V] | undefined;
lowerBound(key: K): OrderedMapIterator<K, V>;
upperBound(key: K): OrderedMapIterator<K, V>;
reverseLowerBound(key: K): OrderedMapIterator<K, V>;
reverseUpperBound(key: K): OrderedMapIterator<K, V>;
setElement(key: K, value: V, hint?: OrderedMapIterator<K, V>): number;
getElementByPos(pos: number): void;
getElementByKey(key: K): V;
min: TreeNode<K, V> | undefined;
root: TreeNode<K, V> | undefined;
max: TreeNode<K, V> | undefined;
readonly comparator: Comparator<K>;
set(k: K, v: V): SonicNodePublicReference<TreeNode<K, V>>;
find(k: K): SonicNodePublicReference<TreeNode<K, V>> | undefined;
get(k: K): V | undefined;
del(k: K): boolean;
clear(): void;
has(k: K): boolean;
_size: number;
size(): number;
isEmpty(): boolean;
getOrNextLower(k: K): TreeNode<K, V> | undefined;
forEach(fn: (node: TreeNode<K, V>) => void): void;
first(): TreeNode<K, V> | undefined;
last(): TreeNode<K, V> | undefined;
readonly next: <N extends import("../types").HeadlessNode>(curr: N) => N | undefined;
iterator0(): () => undefined | TreeNode<K, V>;
iterator(): Iterator<TreeNode<K, V>>;
entries(): IterableIterator<TreeNode<K, V>>;
toString(tab: string): string;
}