UNPKG

apply-hooks

Version:

A high-quality & reliable JavaScript Hooks library.

68 lines (67 loc) 1.75 kB
/** * insert(key) 向树中插入一个新的键 * search(key) 在树中找一个键 * inOrderTraverse 通过中序遍历所有的节点并且返回 * preOrderTraverse 通过前序遍历所有的节点并且返回 * postOrderTraverse 通过后序遍历所有的节点并且返回 * min 返回节点中的最小值 * max 返回节点中的最大值 * remove(key) 从树中移除某个键 */ interface IInsert<T> { (value: T): boolean; } interface ISearch<T> { (key: number): T | boolean; } interface IInOrderTraverse<T> { (cb: (value: T) => void): void; } interface IPreOrderTraverse<T> { (cb: (value: T) => void): void; } interface IPostOrderTraverse<T> { (cb: (value: T) => void): void; } interface ISequenceOrderTraverse<T> { (cb: (value: T) => void): void; } interface IMin<T> { (child: Node<T>): T | boolean; } interface IMax<T> { (child: Node<T>): T | boolean; } interface IIsEmpty { (): boolean; } interface ISize { (): number; } interface IRemove<T> { (key: number): T | boolean; } interface IToKeysArray<T> { (traverse: ISequenceOrderTraverse<T>): number[]; } declare class Node<T> { value: T; left: Node<T> | null; right: Node<T> | null; constructor(value: T, left?: Node<T> | null, right?: Node<T> | null); } declare const useBinarySearchTree: <T>(data?: T[]) => { insert: IInsert<T>; search: ISearch<T>; inOrderTraverse: IInOrderTraverse<T>; preOrderTraverse: IPreOrderTraverse<T>; postOrderTraverse: IPostOrderTraverse<T>; sequenceOrderTraverse: ISequenceOrderTraverse<T>; min: IMin<T>; max: IMax<T>; remove: IRemove<T>; isEmpty: IIsEmpty; size: ISize; toKeysArray: IToKeysArray<T>; }; export default useBinarySearchTree;