/**
* 二叉搜索树
* @filename: Tree/BinarySearchTree/BinarySearchTree.ts
* @author: Mr Prince
* @date: 2022-06-28 11:14:06
*/
///
import { Compare } from '../../../types';
import TreeNode from './TreeNode';
declare class BinarySearchTree {
private compare;
/**
* 根节点
*/
private root;
/**
* 节点个数
*/
private count;
/**
* 比较器类型错误
*/
static readonly CompareInvalidError: {
new (message?: string): {
name: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
/**
* 重复value
*/
static readonly DuplicateValueError: {
new (message?: string): {
name: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
/**
* @param compare 比较器, 比较节点大小
* @param list 初始节点
*/
constructor(compare: Compare, list?: [K, V][]);
/**
* 添加到二叉搜索树中
*/
append(key: K, value: V): void;
/**
* 添加节点
*/
private appendNode;
/**
* 删除节点
* 如果要删除的是根节点
*/
remove(key: K): boolean;
/**
* 移除节点
*/
private removeNode;
/**
* 获取最小值
*/
getMin(): V | undefined;
/**
* 节点个数
*/
getSize(): number;
getMax(): V | undefined;
has(key: K): boolean;
private hasValue;
find(key: K): V | undefined;
private findValue;
clear(): void;
/**
* 是否为空
*/
isEmpty(): boolean;
/**
* 是否非空
*/
isNotEmpty(): boolean;
inorderTraversal(callback: (value: V, key: K) => void): void;
private inorderTraversalImpl;
preorderTraversal(callback: (value: V, key: K) => void): void;
private preorderTraversalImpl;
postorderTraversal(callback: (value: V, key: K) => void): void;
private postorderTraversalImpl;
/**
* 小于或等于指定值的最大值
* @param includeEqual 是否包含指定值
*/
lowerBound(key: K, includeEqual?: boolean): V | undefined;
/**
* 小于或等于指定值的最大值
*/
private lowerBoundImpl;
/**
* 大于或等于指定值的最小值
* @param includeEqual 是否包含指定值
*/
upperBound(key: K, includeEqual?: boolean): V | undefined;
/**
* 大于或等于指定值的最小值
* @param includeEqual 是否包含指定值
*/
upperBoundImpl(node: TreeNode | null, key: K, includeEqual?: boolean): V | undefined;
/**
* 小于等于 key 的
*/
floor(key: K): V | undefined;
/**
* 大于等于 key 的
*/
ceil(key: K): V | undefined;
toArray(): [K, V][];
}
export default BinarySearchTree;