| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- declare type Comparator<T> = (a: T, b: T) => number;
- declare type Predicate<T> = (value: T) => boolean;
- declare class SplayTreeNode<K, Node extends SplayTreeNode<K, Node>> {
- readonly key: K;
- left: Node | null;
- right: Node | null;
- constructor(key: K);
- }
- declare class SplayTreeSetNode<K> extends SplayTreeNode<K, SplayTreeSetNode<K>> {
- constructor(key: K);
- }
- declare class SplayTreeMapNode<K, V> extends SplayTreeNode<K, SplayTreeMapNode<K, V>> {
- readonly value: V;
- constructor(key: K, value: V);
- replaceValue(value: V): SplayTreeMapNode<K, V>;
- }
- declare abstract class SplayTree<K, Node extends SplayTreeNode<K, Node>> {
- protected abstract root: Node | null;
- size: number;
- protected modificationCount: number;
- protected splayCount: number;
- protected abstract compare: Comparator<K>;
- protected abstract validKey: Predicate<unknown>;
- protected splay(key: K): number;
- protected splayMin(node: Node): Node;
- protected splayMax(node: Node): Node;
- protected _delete(key: K): Node | null;
- protected addNewRoot(node: Node, comp: number): void;
- protected _first(): Node | null;
- protected _last(): Node | null;
- clear(): void;
- has(key: unknown): boolean;
- protected defaultCompare(): Comparator<K>;
- protected wrap(): SplayTreeWrapper<K, Node>;
- }
- declare class SplayTreeMap<K, V> extends SplayTree<K, SplayTreeMapNode<K, V>> implements Iterable<[K, V]>, Map<K, V> {
- protected root: SplayTreeMapNode<K, V> | null;
- protected compare: Comparator<K>;
- protected validKey: Predicate<unknown>;
- constructor(compare?: Comparator<K>, isValidKey?: Predicate<unknown>);
- delete(key: unknown): boolean;
- forEach(f: (value: V, key: K, map: Map<K, V>) => void): void;
- get(key: unknown): V | undefined;
- hasValue(value: unknown): boolean;
- set(key: K, value: V): this;
- setAll(other: Map<K, V>): void;
- setIfAbsent(key: K, ifAbsent: () => V): V;
- isEmpty(): boolean;
- isNotEmpty(): boolean;
- firstKey(): K | null;
- lastKey(): K | null;
- lastKeyBefore(key: K): K | null;
- firstKeyAfter(key: K): K | null;
- update(key: K, update: (value: V) => V, ifAbsent?: () => V): V;
- updateAll(update: (key: K, value: V) => V): void;
- keys(): IterableIterator<K>;
- values(): IterableIterator<V>;
- entries(): IterableIterator<[K, V]>;
- [Symbol.iterator](): IterableIterator<[K, V]>;
- [Symbol.toStringTag]: string;
- }
- declare class SplayTreeSet<E> extends SplayTree<E, SplayTreeSetNode<E>> implements Iterable<E>, Set<E> {
- protected root: SplayTreeSetNode<E> | null;
- protected compare: Comparator<E>;
- protected validKey: Predicate<unknown>;
- constructor(compare?: Comparator<E>, isValidKey?: Predicate<unknown>);
- delete(element: unknown): boolean;
- deleteAll(elements: Iterable<unknown>): void;
- forEach(f: (element: E, element2: E, set: Set<E>) => void): void;
- add(element: E): this;
- addAndReturn(element: E): E;
- addAll(elements: Iterable<E>): void;
- isEmpty(): boolean;
- isNotEmpty(): boolean;
- single(): E;
- first(): E;
- last(): E;
- lastBefore(element: E): E | null;
- firstAfter(element: E): E | null;
- retainAll(elements: Iterable<unknown>): void;
- lookup(object: unknown): E | null;
- intersection(other: Set<unknown>): Set<E>;
- difference(other: Set<unknown>): Set<E>;
- union(other: Set<E>): Set<E>;
- protected clone(): SplayTreeSet<E>;
- protected copyNode<Node extends SplayTreeNode<E, Node>>(node: Node | null): SplayTreeSetNode<E> | null;
- toSet(): Set<E>;
- entries(): IterableIterator<[E, E]>;
- keys(): IterableIterator<E>;
- values(): IterableIterator<E>;
- [Symbol.iterator](): IterableIterator<E>;
- [Symbol.toStringTag]: string;
- }
- interface SplayTreeWrapper<K, Node extends SplayTreeNode<K, Node>> {
- getRoot: () => Node | null;
- setRoot: (root: Node | null) => void;
- getSize: () => number;
- getModificationCount: () => number;
- getSplayCount: () => number;
- setSplayCount: (count: number) => void;
- splay: (key: K) => number;
- has: (key: unknown) => boolean;
- }
- export { SplayTreeMap, SplayTreeSet };
|