12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import Node from './node';
- import { Key } from './types';
- export declare type Comparator<Key> = (a: Key, b: Key) => number;
- export declare type Visitor<Key, Value> = (node: Node<Key, Value>) => void;
- export declare type NodePrinter<Key, Value> = (node: Node<Key, Value>) => string;
- declare function DEFAULT_COMPARE(a: Key, b: Key): number;
- export default class Tree<Key = number, Value = any> {
- private _comparator;
- private _root;
- private _size;
- constructor(comparator?: typeof DEFAULT_COMPARE);
- /**
- * Inserts a key, allows duplicates
- */
- insert(key: Key, data?: Value): Node<Key, Value>;
- /**
- * Adds a key, if it is not present in the tree
- */
- add(key: Key, data?: Value): Node<Key, Value>;
- /**
- * @param {Key} key
- * @return {Node|null}
- */
- remove(key: Key): void;
- /**
- * Deletes i from the tree if it's there
- */
- private _remove;
- /**
- * Removes and returns the node with smallest key
- */
- pop(): {
- key: Key;
- data: Value;
- } | null;
- /**
- * Find without splaying
- */
- findStatic(key: Key): Node<Key, Value> | null;
- find(key: Key): Node<Key, Value> | null;
- contains(key: Key): boolean;
- forEach(visitor: Visitor<Key, Value>, ctx?: any): Tree<Key, Value>;
- /**
- * Walk key range from `low` to `high`. Stops if `fn` returns a value.
- */
- range(low: Key, high: Key, fn: Visitor<Key, Value>, ctx?: any): Tree<Key, Value>;
- /**
- * Returns array of keys
- */
- keys(): Key[];
- /**
- * Returns array of all the data in the nodes
- */
- values(): Value[];
- min(): Key | null;
- max(): Key | null;
- minNode(t?: Node<Key, Value>): Node<Key, Value> | null;
- maxNode(t?: Node<Key, Value>): Node<Key, Value> | null;
- /**
- * Returns node at given index
- */
- at(index: number): Node<Key, Value> | null;
- next(d: Node<Key, Value>): Node<Key, Value> | null;
- prev(d: Node<Key, Value>): Node<Key, Value> | null;
- clear(): Tree<Key, Value>;
- toList(): Node<any, any>;
- /**
- * Bulk-load items. Both array have to be same size
- */
- load(keys: Key[], values?: Value[], presort?: boolean): this;
- isEmpty(): boolean;
- readonly size: number;
- readonly root: Node<Key, Value> | null;
- toString(printNode?: NodePrinter<Key, Value>): string;
- update(key: Key, newKey: Key, newData?: Value): void;
- split(key: Key): {
- left: Node<any, any>;
- right: Node<any, any>;
- };
- [Symbol.iterator](): IterableIterator<Node<Key, Value>>;
- }
- export {};
|