import { BinarySearchTreeNode } from './binarySearchTreeNode'; export class BinarySearchTree { constructor(compare?: (a: T, b: T) => number, options?: { key: string }); insert(value: T): BinarySearchTree; insertIterative(value: T): BinarySearchTree; has(value: T): boolean; hasIterative(value: T): boolean; hasKey(key: number|string): boolean; find(value: T): BinarySearchTreeNode | null; findIterative(value: T): BinarySearchTreeNode | null; findKey(key: number|string): BinarySearchTreeNode | null; max(node?: BinarySearchTreeNode): BinarySearchTreeNode | null; maxIterative(node?: BinarySearchTreeNode): BinarySearchTreeNode | null; min(node?: BinarySearchTreeNode): BinarySearchTreeNode | null; minIterative(node?: BinarySearchTreeNode): BinarySearchTreeNode | null; lowerBound(value: T, includeEqual?: boolean): BinarySearchTreeNode | null; lowerBoundIterative(value: T, includeEqual?: boolean): BinarySearchTreeNode | null; lowerBoundKey(key: number|string, includeEqual?: boolean): BinarySearchTreeNode | null; floor(value: T, includeEqual?: boolean): BinarySearchTreeNode | null; floorKey(key: number|string, includeEqual?: boolean): BinarySearchTreeNode | null; upperBound(value: T, includeEqual?: boolean): BinarySearchTreeNode | null; upperBoundIterative(value: T, includeEqual?: boolean): BinarySearchTreeNode | null; upperBoundKey(key: number|string, includeEqual?: boolean): BinarySearchTreeNode | null; ceil(value: T, includeEqual?: boolean): BinarySearchTreeNode | null; ceilKey(key: number|string, includeEqual?: boolean): BinarySearchTreeNode | null; root(): BinarySearchTreeNode | null; count(): number; remove(value: T): boolean; removeIterative(value: T): boolean; removeNode(node: BinarySearchTreeNode): boolean; traverseInOrder(cb: (node: BinarySearchTreeNode) => void, abortCb?: () => boolean): void; traverseInOrderIterative(cb: (node: BinarySearchTreeNode) => void, abortCb?: () => boolean): void; traversePreOrder(cb: (node: BinarySearchTreeNode) => void, abortCb?: () => boolean): void; traversePreOrderIterative(cb: (node: BinarySearchTreeNode) => void, abortCb?: () => boolean): void; traversePostOrder(cb: (node: BinarySearchTreeNode) => void, abortCb?: () => boolean): void; traversePostOrderIterative(cb: (node: BinarySearchTreeNode) => void, abortCb?: () => boolean): void; clear(): void; }