import { CompareFn } from "./Util"; declare class BinarySearchTree { private _root; private readonly _compareFn; private _length; /** * * @param compareFn Function used to determine the order of the elements. * It is expected to return a negative value if first argument is less than * second argument, zero if they're equal and a positive value otherwise. * If omitted, the elements are sorted in ascending order using < and > * operators. */ constructor(compareFn?: CompareFn); inOrderTraversal(fromNode?: BinarySearchTreeNode): Generator; preOrderTraversal(fromNode?: BinarySearchTreeNode): Generator; postOrderTraversal(fromNode?: BinarySearchTreeNode): Generator; levelTraversal(fromNode?: BinarySearchTreeNode): Generator; contains(value: T): BinarySearchTreeNode | undefined; min(fromNode?: BinarySearchTreeNode): BinarySearchTreeNode | undefined; max(fromNode?: BinarySearchTreeNode): BinarySearchTreeNode | undefined; successor(ofNode: BinarySearchTreeNode): BinarySearchTreeNode | undefined; predecessor(ofNode: BinarySearchTreeNode): BinarySearchTreeNode | undefined; add(value: T): number; remove(value: T): T | undefined; get length(): number; } declare class BinarySearchTreeNode { value: T; left: BinarySearchTreeNode | undefined; right: BinarySearchTreeNode | undefined; parent: BinarySearchTreeNode | undefined; constructor(value: T, left?: BinarySearchTreeNode, right?: BinarySearchTreeNode, parent?: BinarySearchTreeNode); inOrderTraversal(): Generator; preOrderTraversal(): Generator; postOrderTraversal(): Generator; levelTraversal(): Generator; } export default BinarySearchTree;