UNPKG

sonic-forest

Version:

High-performance (binary) tree and sorted map implementation (AVL, Splay, Radix, Red-Black)

28 lines (27 loc) 1.68 kB
import type { Comparator, HeadlessNode, ITreeNode, SonicNodePublicReference } from '../types'; export declare const createMap: (Node: new <K, V>(k: K, v: V) => ITreeNode<K, V>, insert: <K, N extends ITreeNode<K, unknown>>(root: N | undefined, node: N, comparator: Comparator<K>) => N, insertLeft: <K, N extends ITreeNode<K, unknown>>(root: N, node: N, parent: N) => N, insertRight: <K, N extends ITreeNode<K, unknown>>(root: N, node: N, parent: N) => N, remove: <K, N extends ITreeNode<K, unknown>>(root: N | undefined, n: N) => N | undefined, print: <K, V>(node: undefined | HeadlessNode | ITreeNode<K, V>, tab?: string) => string) => { new <K, V>(comparator?: Comparator<K>): { min: ITreeNode<K, V> | undefined; root: ITreeNode<K, V> | undefined; max: ITreeNode<K, V> | undefined; readonly comparator: Comparator<K>; set(k: K, v: V): SonicNodePublicReference<ITreeNode<K, V>>; find(k: K): SonicNodePublicReference<ITreeNode<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): ITreeNode<K, V> | undefined; forEach(fn: (node: ITreeNode<K, V>) => void): void; first(): ITreeNode<K, V> | undefined; last(): ITreeNode<K, V> | undefined; readonly next: <N extends HeadlessNode>(curr: N) => N | undefined; iterator0(): () => undefined | ITreeNode<K, V>; iterator(): Iterator<ITreeNode<K, V>>; entries(): IterableIterator<ITreeNode<K, V>>; toString(tab: string): string; }; };