export declare class BinaryTree<V> {
    private _root;
    private _comp;
    private _size;
    constructor(comparator: Comparator<V>);
    insert(value: V): void;
    remove(value: V): void;
    removeAll(): void;
    contains(value: V): boolean;
    getValue(value: V): V;
    get size(): number;
    get isEmpty(): boolean;
    ceiling(value: V): V;
    floor(value: V): V;
    lower(value: V): V;
    higher(value: V): V;
    headSet(value: V, inclusive?: boolean): V[];
    tailSet(value: V, inclusive?: boolean): V[];
    subSet(low: V, high: V, lowInclusive?: boolean, highInclusive?: boolean): V[];
    toArray(): V[];
    iterator(): Iterator<V>;
    compare(node1: V, node2: V): number;
    private contains0;
    private lower0;
    private higher0;
    private sub0;
    private head0;
    private tail0;
    private addAll0;
    private remove0;
    private level0;
    private decreaseLevel0;
    private insert0;
    newTreeNode0(value: V): TreeNode<V>;
    private skew0;
    private split0;
}
export declare class TreeNode<V> {
    private _level;
    private _right;
    private _left;
    private _value;
    constructor(value: V, level?: number, left?: TreeNode<V>, right?: TreeNode<V>);
    get level(): number;
    get right(): TreeNode<V>;
    get left(): TreeNode<V>;
    get value(): V;
    set right(node: TreeNode<V>);
    set left(node: TreeNode<V>);
    set level(level: number);
    set value(value: V);
    isLeaf(): boolean;
    getSuccessor(): TreeNode<V>;
    getPredecessor(): TreeNode<V>;
    toString(): string;
}
export interface Iterator<V> {
    hasNext(): boolean;
    next(): V;
}
export interface Comparator<V> {
    compare(node1: V, node2: V): number;
}
export declare class StringComparator implements Comparator<string> {
    compare(value1: string, value2: string): number;
}
export declare class NumberComparator implements Comparator<number> {
    compare(value1: number, value2: number): number;
}
export declare function createStringTree(): BinaryTree<string>;
export declare function createNumberTree(): BinaryTree<number>;
